From c081401a1923ec8263d30eaf60471822eb607e91 Mon Sep 17 00:00:00 2001 From: vikasrohit Date: Thu, 29 Oct 2015 19:12:49 -0700 Subject: [PATCH 1/3] Removed console log. --- app/my-dashboard/my-challenges/my-challenges.controller.js | 1 - 1 file changed, 1 deletion(-) diff --git a/app/my-dashboard/my-challenges/my-challenges.controller.js b/app/my-dashboard/my-challenges/my-challenges.controller.js index e57b61d62..5f6387b54 100644 --- a/app/my-dashboard/my-challenges/my-challenges.controller.js +++ b/app/my-dashboard/my-challenges/my-challenges.controller.js @@ -39,7 +39,6 @@ ChallengeService.getUserMarathonMatches(handle, marathonMatchParams), ChallengeService.getUserChallenges(handle, challengeParams) ]).then(function(challenges){ - console.log('challenges: ', challenges); var marathonMatches = challenges[0]; var devDesignChallenges = challenges[1]; From eb23d5a2d66a443e8c329c782543b3a8c6ada446 Mon Sep 17 00:00:00 2001 From: vikasrohit Date: Thu, 29 Oct 2015 19:37:08 -0700 Subject: [PATCH 2/3] 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) --- .../subtrack-stats.controller.js | 3 ++ app/profile/about/about.jade | 5 +- app/profile/profile.controller.js | 17 +++++- app/services/profile.service.js | 1 + app/services/userStats.service.js | 53 ++++++++++++++----- 5 files changed, 61 insertions(+), 18 deletions(-) diff --git a/app/my-dashboard/subtrack-stats/subtrack-stats.controller.js b/app/my-dashboard/subtrack-stats/subtrack-stats.controller.js index 79333d54a..40c2efd09 100644 --- a/app/my-dashboard/subtrack-stats/subtrack-stats.controller.js +++ b/app/my-dashboard/subtrack-stats/subtrack-stats.controller.js @@ -20,6 +20,9 @@ var subtrackRanks = UserStatsService.compileSubtracks(trackRanks); UserStatsService.processStats(subtrackRanks); + // filter stats based on processing done above + // filtering is a separate step to allow multiple pre-processings and filter out in single call + subtrackRanks = UserStatsService.filterStats(subtrackRanks); // sort subtrack ranks subtrackRanks = $filter('orderBy')(subtrackRanks, 'mostRecentEventDate', true); diff --git a/app/profile/about/about.jade b/app/profile/about/about.jade index 54534f246..a3e459ffc 100644 --- a/app/profile/about/about.jade +++ b/app/profile/about/about.jade @@ -48,7 +48,7 @@ .track( ng-repeat="track in profileVm.profile.tracks", - ng-if="profileVm.categories[track].length > 0", + ng-if="profileVm.categories[track].showTrack", id="{{track}}_TRACK" ) @@ -63,6 +63,7 @@ ng-repeat="subtrack in profileVm.categories[track] | orderBy:'mostRecentEventDate':true", ui-sref="profile.subtrack({track: subtrack.track, subTrack: subtrack.subTrack})", class="{{$index == 0 && 'first'}}" + ng-if="subtrack.showStats" ) .name {{subtrack.subTrack | track}} @@ -77,7 +78,7 @@ .tag Ranking - .ranking(ng-if="subtrack.wins !== null && subtrack.rank === null && !subtrack.rating") + .ranking(ng-if="subtrack.statType === 'Wins'") .number(style="color: #21B2F1") {{subtrack.wins}} .tag Wins diff --git a/app/profile/profile.controller.js b/app/profile/profile.controller.js index a3ead8bd7..5c8e95d93 100644 --- a/app/profile/profile.controller.js +++ b/app/profile/profile.controller.js @@ -4,11 +4,11 @@ angular.module('tc.profile').controller('ProfileCtrl', ProfileCtrl); ProfileCtrl.$inject = ['CONSTANTS', '$log', '$q', - 'TcAuthService', 'UserService', 'ProfileService', 'ChallengeService', 'ExternalAccountService', + 'TcAuthService', 'UserService', 'UserStatsService', 'ProfileService', 'ChallengeService', 'ExternalAccountService', 'userHandle', 'profile', 'ngDialog', '$anchorScroll' ]; - function ProfileCtrl(CONSTANTS, $log, $q, TcAuthService, UserService, ProfileService, ChallengeService, ExternalAccountService, userHandle, profile, ngDialog, $anchorScroll) { + function ProfileCtrl(CONSTANTS, $log, $q, TcAuthService, UserService, UserStatsService, ProfileService, ChallengeService, ExternalAccountService, userHandle, profile, ngDialog, $anchorScroll) { var vm = this; // set profile to the object that was resolved vm.profile = profile; @@ -45,6 +45,19 @@ vm.numProjects = vm.stats.challenges; vm.numWins = vm.stats.wins; vm.categories = ProfileService.getRanks(vm.stats); + for(var trackName in vm.categories) { + var subTracks = vm.categories[trackName]; + var trackStats = vm.categories[trackName]; + trackStats.showTrack = false; + if (subTracks && subTracks.length > 0) { + subTracks.forEach(function(subTrackRank) { + UserStatsService.processStatRank(subTrackRank); + if (subTrackRank.showStats) { + trackStats.showTrack = true; + } + }); + } + } } else { vm.stats = false; // vm.profile.tracks = []; diff --git a/app/services/profile.service.js b/app/services/profile.service.js index 5cacfe8f9..6419cfd04 100644 --- a/app/services/profile.service.js +++ b/app/services/profile.service.js @@ -123,6 +123,7 @@ 'rank': false, 'challenges': subTrack.challenges, 'wins': subTrack.wins, + 'submissions': (subTrack.submissions && subTrack.submissions.submissions) || 0, 'mostRecentEventDate': new Date(subTrack.mostRecentEventDate) }; }); diff --git a/app/services/userStats.service.js b/app/services/userStats.service.js index 59bd0036a..0615caf5d 100644 --- a/app/services/userStats.service.js +++ b/app/services/userStats.service.js @@ -14,7 +14,9 @@ var service = { getIterableStats: getIterableStats, processStats: processStats, - compileSubtracks: compileSubtracks + compileSubtracks: compileSubtracks, + filterStats: filterStats, + processStatRank: processStatRank }; var percentageFunc = function(n) { return $filter('percentage')(n);}; @@ -111,27 +113,50 @@ }, []); } - function processStats(ranks) { - angular.forEach(ranks, function(rank) { - if (rank.track === 'DESIGN') { + function processStatRank(rank) { + rank.showStats = true; + if (rank.track === 'DESIGN') { + rank.stat = rank.wins; + rank.statType = 'Wins'; + // for non rated tracks, use submissions to filter out empty values + if(!rank.submissions) { + rank.showStats = false; + } + } else if (rank.track === 'COPILOT') { + rank.stat = rank.activeContests; + rank.statType = 'Challenges'; + } else if (rank.track === 'DEVELOP') { + if (['CODE', 'FIRST_2_FINISH'].indexOf(rank.subTrack) != -1) { rank.stat = rank.wins; rank.statType = 'Wins'; - } else if (rank.track === 'COPILOT') { - rank.stat = rank.activeContests; - rank.statType = 'Challenges'; - } else if (rank.track === 'DEVELOP') { - if (['CODE', 'FIRST_2_FINISH'].indexOf(rank.subTrack) != -1) { - rank.stat = rank.wins; - rank.statType = 'Wins'; - } else { - rank.stat = rank.rating; - rank.statType = 'Rating'; + // for non rated tracks, use submissions to filter out empty values + if(!rank.submissions) { + rank.showStats = false; } } else { rank.stat = rank.rating; rank.statType = 'Rating'; } + } else { + rank.stat = rank.rating; + rank.statType = 'Rating'; + } + } + + function processStats(ranks) { + angular.forEach(ranks, function(rank) { + processStatRank(rank); + }); + } + + function filterStats(ranks) { + var filtered = []; + angular.forEach(ranks, function(rank) { + if (rank.showStats) { + filtered.push(rank); + } }); + return filtered; } From 0f4d00cb9d0d021dc24115cc38b1e16145586f85 Mon Sep 17 00:00:00 2001 From: vikasrohit Date: Fri, 30 Oct 2015 12:19:39 -0700 Subject: [PATCH 3/3] SUP-2387, Dealing with stats for design and non-rated sub-tracks -- Handled the submissions count be fetched directly from subtract object instead of looking into nested submissions object for design track. --- app/profile/profile.controller.js | 6 +++--- app/services/profile.service.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/profile/profile.controller.js b/app/profile/profile.controller.js index 5c8e95d93..4eddf8e0b 100644 --- a/app/profile/profile.controller.js +++ b/app/profile/profile.controller.js @@ -46,11 +46,11 @@ vm.numWins = vm.stats.wins; vm.categories = ProfileService.getRanks(vm.stats); for(var trackName in vm.categories) { - var subTracks = vm.categories[trackName]; + // trackStats is an array of subtrack rankings along with track stats properties (e.g showTrack) var trackStats = vm.categories[trackName]; trackStats.showTrack = false; - if (subTracks && subTracks.length > 0) { - subTracks.forEach(function(subTrackRank) { + if (trackStats && trackStats.length > 0) { + trackStats.forEach(function(subTrackRank) { UserStatsService.processStatRank(subTrackRank); if (subTrackRank.showStats) { trackStats.showTrack = true; diff --git a/app/services/profile.service.js b/app/services/profile.service.js index 6419cfd04..6b29b4c8f 100644 --- a/app/services/profile.service.js +++ b/app/services/profile.service.js @@ -123,7 +123,7 @@ 'rank': false, 'challenges': subTrack.challenges, 'wins': subTrack.wins, - 'submissions': (subTrack.submissions && subTrack.submissions.submissions) || 0, + 'submissions': (subTrack.submissions) || 0, 'mostRecentEventDate': new Date(subTrack.mostRecentEventDate) }; });