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

Commit eb23d5a

Browse files
author
vikasrohit
committed
SUP-2387, Dealing with stats for design and non-rated sub-tracks
-- Fixed code to not show subtracks for unrated subtracts where user does not have any submission (done on both dashboard and profile pages)
1 parent c081401 commit eb23d5a

File tree

5 files changed

+61
-18
lines changed

5 files changed

+61
-18
lines changed

app/my-dashboard/subtrack-stats/subtrack-stats.controller.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
var subtrackRanks = UserStatsService.compileSubtracks(trackRanks);
2121

2222
UserStatsService.processStats(subtrackRanks);
23+
// filter stats based on processing done above
24+
// filtering is a separate step to allow multiple pre-processings and filter out in single call
25+
subtrackRanks = UserStatsService.filterStats(subtrackRanks);
2326
// sort subtrack ranks
2427
subtrackRanks = $filter('orderBy')(subtrackRanks, 'mostRecentEventDate', true);
2528

app/profile/about/about.jade

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848

4949
.track(
5050
ng-repeat="track in profileVm.profile.tracks",
51-
ng-if="profileVm.categories[track].length > 0",
51+
ng-if="profileVm.categories[track].showTrack",
5252
id="{{track}}_TRACK"
5353
)
5454

@@ -63,6 +63,7 @@
6363
ng-repeat="subtrack in profileVm.categories[track] | orderBy:'mostRecentEventDate':true",
6464
ui-sref="profile.subtrack({track: subtrack.track, subTrack: subtrack.subTrack})",
6565
class="{{$index == 0 && 'first'}}"
66+
ng-if="subtrack.showStats"
6667
)
6768
.name {{subtrack.subTrack | track}}
6869

@@ -77,7 +78,7 @@
7778

7879
.tag Ranking
7980

80-
.ranking(ng-if="subtrack.wins !== null && subtrack.rank === null && !subtrack.rating")
81+
.ranking(ng-if="subtrack.statType === 'Wins'")
8182
.number(style="color: #21B2F1") {{subtrack.wins}}
8283

8384
.tag Wins

app/profile/profile.controller.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
angular.module('tc.profile').controller('ProfileCtrl', ProfileCtrl);
55

66
ProfileCtrl.$inject = ['CONSTANTS', '$log', '$q',
7-
'TcAuthService', 'UserService', 'ProfileService', 'ChallengeService', 'ExternalAccountService',
7+
'TcAuthService', 'UserService', 'UserStatsService', 'ProfileService', 'ChallengeService', 'ExternalAccountService',
88
'userHandle', 'profile', 'ngDialog', '$anchorScroll'
99
];
1010

11-
function ProfileCtrl(CONSTANTS, $log, $q, TcAuthService, UserService, ProfileService, ChallengeService, ExternalAccountService, userHandle, profile, ngDialog, $anchorScroll) {
11+
function ProfileCtrl(CONSTANTS, $log, $q, TcAuthService, UserService, UserStatsService, ProfileService, ChallengeService, ExternalAccountService, userHandle, profile, ngDialog, $anchorScroll) {
1212
var vm = this;
1313
// set profile to the object that was resolved
1414
vm.profile = profile;
@@ -45,6 +45,19 @@
4545
vm.numProjects = vm.stats.challenges;
4646
vm.numWins = vm.stats.wins;
4747
vm.categories = ProfileService.getRanks(vm.stats);
48+
for(var trackName in vm.categories) {
49+
var subTracks = vm.categories[trackName];
50+
var trackStats = vm.categories[trackName];
51+
trackStats.showTrack = false;
52+
if (subTracks && subTracks.length > 0) {
53+
subTracks.forEach(function(subTrackRank) {
54+
UserStatsService.processStatRank(subTrackRank);
55+
if (subTrackRank.showStats) {
56+
trackStats.showTrack = true;
57+
}
58+
});
59+
}
60+
}
4861
} else {
4962
vm.stats = false;
5063
// vm.profile.tracks = [];

app/services/profile.service.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@
123123
'rank': false,
124124
'challenges': subTrack.challenges,
125125
'wins': subTrack.wins,
126+
'submissions': (subTrack.submissions && subTrack.submissions.submissions) || 0,
126127
'mostRecentEventDate': new Date(subTrack.mostRecentEventDate)
127128
};
128129
});

app/services/userStats.service.js

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
var service = {
1515
getIterableStats: getIterableStats,
1616
processStats: processStats,
17-
compileSubtracks: compileSubtracks
17+
compileSubtracks: compileSubtracks,
18+
filterStats: filterStats,
19+
processStatRank: processStatRank
1820
};
1921

2022
var percentageFunc = function(n) { return $filter('percentage')(n);};
@@ -111,27 +113,50 @@
111113
}, []);
112114
}
113115

114-
function processStats(ranks) {
115-
angular.forEach(ranks, function(rank) {
116-
if (rank.track === 'DESIGN') {
116+
function processStatRank(rank) {
117+
rank.showStats = true;
118+
if (rank.track === 'DESIGN') {
119+
rank.stat = rank.wins;
120+
rank.statType = 'Wins';
121+
// for non rated tracks, use submissions to filter out empty values
122+
if(!rank.submissions) {
123+
rank.showStats = false;
124+
}
125+
} else if (rank.track === 'COPILOT') {
126+
rank.stat = rank.activeContests;
127+
rank.statType = 'Challenges';
128+
} else if (rank.track === 'DEVELOP') {
129+
if (['CODE', 'FIRST_2_FINISH'].indexOf(rank.subTrack) != -1) {
117130
rank.stat = rank.wins;
118131
rank.statType = 'Wins';
119-
} else if (rank.track === 'COPILOT') {
120-
rank.stat = rank.activeContests;
121-
rank.statType = 'Challenges';
122-
} else if (rank.track === 'DEVELOP') {
123-
if (['CODE', 'FIRST_2_FINISH'].indexOf(rank.subTrack) != -1) {
124-
rank.stat = rank.wins;
125-
rank.statType = 'Wins';
126-
} else {
127-
rank.stat = rank.rating;
128-
rank.statType = 'Rating';
132+
// for non rated tracks, use submissions to filter out empty values
133+
if(!rank.submissions) {
134+
rank.showStats = false;
129135
}
130136
} else {
131137
rank.stat = rank.rating;
132138
rank.statType = 'Rating';
133139
}
140+
} else {
141+
rank.stat = rank.rating;
142+
rank.statType = 'Rating';
143+
}
144+
}
145+
146+
function processStats(ranks) {
147+
angular.forEach(ranks, function(rank) {
148+
processStatRank(rank);
149+
});
150+
}
151+
152+
function filterStats(ranks) {
153+
var filtered = [];
154+
angular.forEach(ranks, function(rank) {
155+
if (rank.showStats) {
156+
filtered.push(rank);
157+
}
134158
});
159+
return filtered;
135160
}
136161

137162

0 commit comments

Comments
 (0)