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

Commit bf7d199

Browse files
committed
F2F: Topcoder - Dashboard header update
Submission #518728 by ronakkaria to the challenge http://www.topcoder.com/challenge-details/30059314/?type=develop
1 parent eeac4c5 commit bf7d199

File tree

6 files changed

+771
-742
lines changed

6 files changed

+771
-742
lines changed

app/directives/page-state-header/page-state-header.directive.js

Lines changed: 54 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ import _ from 'lodash'
1616
hideMoney: '=',
1717
defaultState: '@'
1818
},
19-
controller: ['CONSTANTS', '$rootScope', '$scope', 'ProfileService', 'logger', '$state', pageStateHeader],
19+
controller: ['CONSTANTS', '$rootScope', '$scope', 'ProfileService', 'logger', '$state', 'ChallengeService', '$q', 'UserService', 'BadgeService', pageStateHeader],
2020
controllerAs: 'vm'
2121
}
2222
})
2323

24-
function pageStateHeader(CONSTANTS, $rootScope, $scope, ProfileService, logger, $state) {
24+
function pageStateHeader(CONSTANTS, $rootScope, $scope, ProfileService, logger, $state, ChallengeService, $q, UserService, BadgeService) {
2525
var vm = this
2626
vm.backHandler = backHandler
2727

@@ -35,13 +35,10 @@ import _ from 'lodash'
3535
function activate() {
3636
vm.handle = $scope.handle
3737
vm.profile = null
38-
vm.handleColor = null
3938
$scope.hideMoney = _.get($scope, 'hideMoney', true)
4039
vm.previousStateName = null
4140
vm.previousStateLabel = null
4241
vm.previousState = null
43-
vm.showBackLink = _.get($scope, 'showBackLink', false)
44-
vm.loading = true
4542

4643
// identifies the previous state
4744
if ($scope.$root.previousState && $scope.$root.previousState.name.length > 0) {
@@ -65,14 +62,33 @@ import _ from 'lodash'
6562
// gets member's profile
6663
ProfileService.getUserProfile(vm.handle).then(function(profile) {
6764
vm.profile = profile
68-
vm.handleColor = ProfileService.getUserHandleColor(vm.profile)
6965

70-
if (!$scope.hideMoney) {
71-
displayMoneyEarned(vm.handle)
72-
} else {
73-
vm.loading = false
74-
}
66+
// get members dashboard badge
67+
UserService.getV2UserProfile(vm.handle).then(function(resp) {
68+
// Calling the mock to return a badge
69+
// In actuality filtering should be done by whether the achievement contains a field 'forDashboard' or not.
70+
var dashboardAchievement = _filterDashboardAchievement(resp.Achievements || [])[0]
71+
72+
if (dashboardAchievement) {
73+
vm.dashboardBadge = BadgeService.getAchievementVm(dashboardAchievement)
74+
}
75+
})
76+
77+
})
78+
79+
// get member's challenges to display number of active challenges
80+
$q.all([
81+
ChallengeService.getUserMarathonMatches(vm.handle, { filter: 'status=active' }),
82+
ChallengeService.getUserChallenges(vm.handle, { filter: 'status=active' })
83+
]).then(function(challenges){
84+
var marathonMatches = challenges[0]
85+
var devDesignChallenges = challenges[1]
86+
87+
vm.activeChallenges = marathonMatches.length + devDesignChallenges.length
7588
})
89+
90+
displayMoneyEarned(vm.handle)
91+
7692
}
7793

7894
function backHandler() {
@@ -100,15 +116,39 @@ import _ from 'lodash'
100116
if (!vm.moneyEarned) {
101117
$scope.hideMoney = true
102118
}
103-
104-
vm.loading = false
105119
})
106120
.catch(function(err) {
107121
$scope.hideMoney = true
108-
vm.loading = false
109122

110123
logger.error('Could not get user financial information', err)
111124
})
112125
}
126+
127+
// Temporary function to simulate dashboard achievement
128+
function _filterDashboardAchievement(achievements) {
129+
// If forceBadge is true, it displays the achievement in _mock, whether the user has that achievement or not
130+
var _forceBadge = false
131+
132+
// temoprary config object that maps usernames to badge name
133+
var _mock = {
134+
ronakkaria: 'First Win',
135+
birdofpreyru: 'Predix Community'
136+
}
137+
138+
var dashboardBadgeName = _mock[vm.handle]
139+
if (!dashboardBadgeName) { return [] }
140+
141+
if (_forceBadge) {
142+
return [{
143+
date: new Date(),
144+
description: _mock[vm.handle]
145+
}]
146+
}
147+
148+
return achievements.filter(function(achievement) {
149+
return (achievement.description === dashboardBadgeName)
150+
})
151+
}
152+
113153
}
114154
})()

app/directives/page-state-header/page-state-header.jade

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,15 @@
66
div(ng-transclude)
77

88
.info
9-
.pic
10-
a(ui-sref="profile.about({userHandle: vm.profile.handle})")
11-
img.profile-circle(ng-if="vm.profile.photoURL", ng-src="{{vm.profile.photoURL}}")
12-
13-
img.profile-circle(ng-if="!vm.profile.photoURL", src=require("../../../assets/images/ico-user-default.svg"))
14-
15-
.user-metrics(id="metrics", ng-hide="vm.loading")
16-
a.handle(style="color:{{vm.handleColor}};", ui-sref="profile.about({userHandle: vm.profile.handle})") {{vm.profile.handle}}
17-
18-
.money-earned(ng-hide="hideMoney")
9+
.item
10+
.value
11+
p(ng-bind="vm.activeChallenges")
12+
.title
13+
p Active Challenges
14+
.item(ng-if="!hideMoney")
15+
.value
1916
p.number(ng-bind="vm.moneyEarned | currency:'$':0")
20-
21-
p Earned
22-
23-
.back-link(ng-if="showBackLink && vm.previousStateLabel")
24-
a(ng-click="vm.backHandler()") Back to {{vm.previousStateLabel}}
25-
17+
.title
18+
p Won in Prizes
19+
.item(ng-if="vm.dashboardBadge")
20+
.badge(ng-class="(vm.dashboardBadge.specificClass || vm.dashboardBadge.groupClass) + ' ' + (vm.dashboardBadge.type) + 'Badge'")

0 commit comments

Comments
 (0)