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

Commit fe1567d

Browse files
author
Nick Litwin
committed
Fix merge conflicts and set up mock services (with no mock data)
2 parents 738df06 + 4977f96 commit fe1567d

File tree

11 files changed

+188
-41
lines changed

11 files changed

+188
-41
lines changed

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
a(ng-click="enableHide && toggle()")
2+
3+
i.colored(ng-show="icon", ng-class="icon")
4+
i.default(ng-hide="icon") {}
5+
.name {{skill.tagName}} [{{skill.score}}]
6+
spam(ng-if="skill.hidden") Hidden
17

2-
i.colored(ng-show="icon", ng-class="icon")
3-
i.default(ng-hide="icon") {}
4-
.name {{skill}}

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

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,34 @@
3838
restrict: 'E',
3939
templateUrl: 'directives/skill-tile/skill-tile.directive.html',
4040
scope: {
41-
skill: '=skill'
41+
skill: '=',
42+
enableHide: "="
4243
},
43-
controller: ['$scope', function($scope) {
44+
controller: ['$scope', 'ProfileService', 'UserService', function($scope, ProfileService, UserService) {
4445

4546
for (var key in _iconMap) {
46-
if ($scope.skill.trim().toLowerCase().indexOf(key) > -1) {
47+
if ($scope.skill.tagName.trim().toLowerCase().indexOf(key) > -1) {
4748
$scope.icon = _iconMap[key];
4849
break;
4950
}
5051
}
52+
53+
$scope.toggle = function() {
54+
var skillTagId = $scope.skill.tagId;
55+
var handle = UserService.getUserIdentity().handle;
56+
if ($scope.skill.hidden) {
57+
// un-hide skill
58+
ProfileService.addUserSkill(handle, skillTagId).then(function(_skills) {
59+
$scope.skill.hidden = false;
60+
});
61+
} else {
62+
// hide skill
63+
ProfileService.hideUserSkill(handle, skillTagId).then(function(_skills) {
64+
$scope.skill.hidden = true;
65+
});
66+
}
67+
};
68+
5169
}]
5270
};
5371
});

app/services/api.service.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,16 @@
102102
return null; // data
103103
}
104104
})
105+
.addElementTransformer('skills', function(elem) {
106+
// transform map to simple array
107+
var skills = []
108+
_.forEach(elem.skills, function(n,k) {
109+
n.tagId = k;
110+
skills.push(n);
111+
});
112+
elem.skills = skills;
113+
return elem;
114+
})
105115
.setErrorInterceptor(function(response) {
106116
// TODO
107117
switch (response.status) {

app/services/profile.service.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@
1313
// primary, for global use
1414
getUserProfile: getUserProfile,
1515
updateUserProfile: updateUserProfile,
16+
1617
getUserSkills: getUserSkills,
17-
updateUserSkills: updateUserSkills,
18+
addUserSkill: addUserSkill,
19+
hideUserSkill: hideUserSkill,
20+
1821
getUserFinancials: getUserFinancials,
1922
getUserStats: getUserStats,
2023
getDistributionStats: getDistributionStats,
@@ -43,8 +46,15 @@
4346
return restangular.one('members', username).one('skills').get();
4447
}
4548

46-
function updateUserSkills(body) {
47-
var username = UserService.getUserIdentity().handle;
49+
function addUserSkill(username, skillTagId) {
50+
var body = { skills: {} };
51+
body['skills'][skillTagId] = { 'hidden': false };
52+
return restangular.one('members', username).one('skills').patch(body);
53+
}
54+
55+
function hideUserSkill(username, skillTagId) {
56+
var body = { skills: {} };
57+
body['skills'][skillTagId] = { 'hidden': true };
4858
return restangular.one('members', username).one('skills').patch(body);
4959
}
5060

app/services/tags.service.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,20 @@
66
TagsService.$inject = ['ApiService'];
77

88
function TagsService(ApiService) {
9-
109
var api = ApiService.restangularV3;
1110

1211
var service = {
13-
getTags: getTags,
12+
getApprovedSkillTags: getApprovedSkillTags
1413
};
14+
1515
return service;
1616

17-
/////////////////////////////////////////
17+
/////////////////////////////
1818

19-
function getTags() {
20-
return api.all('tags').getList();
19+
function getApprovedSkillTags() {
20+
return api.all("tags")
21+
.withHttpConfig({skipAuthorization: true})
22+
.getList({filter: 'domain=SKILLS&status=APPROVED'});
2123
}
2224
}
23-
2425
})();

app/settings/edit-profile/edit-profile.controller.js

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33

44
angular.module('tc.settings').controller('EditProfileController', EditProfileController);
55

6-
EditProfileController.$inject = ['userData', 'userHandle', 'ProfileService', '$log', 'ISO3166', 'ImageService', '$rootScope', 'CONSTANTS'];
6+
EditProfileController.$inject = ['userData', 'userHandle', 'ProfileService', '$log', 'ISO3166', 'ImageService', '$rootScope', 'CONSTANTS', 'TagsService'];
77

8-
function EditProfileController(userData, userHandle, ProfileService, $log, ISO3166, ImageService, $rootScope, CONSTANTS) {
8+
function EditProfileController(userData, userHandle, ProfileService, $log, ISO3166, ImageService, $rootScope, CONSTANTS, TagsService) {
99
var vm = this;
1010
vm.toggleTrack = toggleTrack;
1111
vm.updateCountry = updateCountry;
1212
vm.onFileChange = onFileChange;
1313
vm.updateProfile = updateProfile;
14+
vm.skills = false;
15+
vm.addSkill = addSkill;
16+
vm.tags = [];
1417

1518
activate();
1619

@@ -19,7 +22,35 @@
1922
vm.countryObj = ISO3166.getCountryObjFromAlpha3(userData.competitionCountryCode);
2023

2124
processData(userData);
22-
vm.userData = userData
25+
vm.userData = userData;
26+
27+
TagsService.getApprovedSkillTags()
28+
.then(function(tags) {
29+
vm.tags = tags;
30+
})
31+
.catch(function(err) {
32+
$log.error(err);
33+
});
34+
35+
ProfileService.getUserSkills(vm.userData.handle)
36+
.then(function(skills) {
37+
vm.skills = skills.skills;
38+
})
39+
.catch(function(err) {
40+
$log.error(err);
41+
});
42+
}
43+
44+
function addSkill(skill) {
45+
if (skill) {
46+
var skillTagId = _.get(skill, 'originalObject.id').toString();
47+
ProfileService.addUserSkill(vm.userData.handle, skillTagId).then(function(resp) {
48+
// find the new skill in response object and inject it into our existing list.
49+
// we dont want to replace the entire object / map because we will lose hidden tags
50+
var newSkill = _.find(resp.skills, {tagId: skillTagId});
51+
vm.skills.push(newSkill);
52+
});
53+
}
2354
}
2455

2556
function updateCountry(angucompleteCountryObj) {

app/settings/edit-profile/edit-profile.jade

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,29 @@
8585
p Find challenges about data and algorithms. You know data sets, algorithms, DB structures, statistics, data analysis.
8686

8787
button(type="submit", ng-disabled="vm.editProfile.$invalid", ng-class="{'enabled-button': vm.editProfile.$valid}") Save
88-
89-
.field-section
90-
h4.field-title Add Your Skills
91-
92-
.field-section
93-
h4.field-title Links to Work
88+
89+
.field-section.edit-skills
90+
h4.field-title My Skills
91+
h5 This skills are shown on the
92+
93+
angucomplete-alt(
94+
id="tagId",
95+
input-name="skill-input",
96+
placeholder='Type skill name here and press "Enter" to add it',
97+
pause="100",
98+
selected-object="vm.addSkill",
99+
local-data="vm.tags",
100+
search-fields="name",
101+
title-field="name",
102+
match-class="angucomplete-highlight",
103+
minlength="1"
104+
)
105+
106+
.skills
107+
.skill(ng-repeat="skill in vm.skills | orderBy:'-score'")
108+
skill-tile(skill="skill" enable-hide="true")
109+
110+
.clearfix
111+
112+
.field-section
113+
h4.field-title Links to Work

app/settings/edit-profile/edit-profile.spec.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,23 @@ describe('Edit Profile Controller', function() {
1111
return this;
1212
};
1313

14+
var tagsService = {
15+
getApprovedSkillTags: function() {
16+
return $q.when({});
17+
}
18+
};
19+
20+
var profileService = {
21+
getUserSkills: function() {
22+
return $q.when({});
23+
}
24+
};
25+
1426
vm = $controller('EditProfileController', {
1527
userData: mockProfile,
16-
userHandle: 'albertwang'
28+
userHandle: 'albertwang',
29+
TagsService: tagsService,
30+
ProfileService: profileService
1731
});
1832
});
1933

app/skill-picker/skill-picker.controller.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
activate();
1515

1616
function activate() {
17-
TagsService.getTags()
18-
.then(function(res) {
19-
// console.log('tags: ', res);
20-
})
21-
.catch(function(err) {
22-
$log.error(err);
23-
});
17+
// TagsService.getApprovedSkillTags()
18+
// .then(function(res) {
19+
// // console.log('tags: ', res);
20+
// })
21+
// .catch(function(err) {
22+
// $log.error(err);
23+
// });
2424

2525
vm.noTrackSelected = true;
2626

app/specs.html

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ <h1><a href="specs.html">Spec Runner</a></h1>
5959
<script src="../bower_components/x2js/xml2json.min.js"></script>
6060
<script src="../bower_components/angular-xml/angular-xml.js"></script>
6161
<script src="../bower_components/appirio-tech-ng-iso-constants/dist/ng-iso-constants.js"></script>
62+
<script src="../bower_components/d3/d3.js"></script>
6263
<script src="../bower_components/jstzdetect/jstz.min.js"></script>
6364
<script src="../bower_components/moment/moment.js"></script>
6465
<script src="../bower_components/ng-notifications-bar/dist/ngNotificationsBar.min.js"></script>
6566
<script src="../bower_components/ngDialog/js/ngDialog.js"></script>
6667
<script src="../bower_components/lodash/lodash.js"></script>
6768
<script src="../bower_components/restangular/dist/restangular.js"></script>
68-
<script src="../bower_components/d3/d3.js"></script>
6969
<script src="../bower_components/angular-mocks/angular-mocks.js"></script>
7070
<script src="../bower_components/sinon/index.js"></script>
7171
<script src="../bower_components/bardjs/dist/bard.js"></script>
@@ -83,6 +83,9 @@ <h1><a href="specs.html">Spec Runner</a></h1>
8383
<script src="/app/topcoder.interceptors.js"></script>
8484
<script src="/app/topcoder.controller.js"></script>
8585
<script src="/app/topcoder.constants.js"></script>
86+
<script src="/app/skill-picker/skill-picker.module.js"></script>
87+
<script src="/app/skill-picker/skill-picker.routes.js"></script>
88+
<script src="/app/skill-picker/skill-picker.controller.js"></script>
8689
<script src="/app/settings/settings.module.js"></script>
8790
<script src="/app/settings/update-password/update-password.controller.js"></script>
8891
<script src="/app/settings/settings.routes.js"></script>
@@ -93,6 +96,7 @@ <h1><a href="specs.html">Spec Runner</a></h1>
9396
<script src="/app/services/services.module.js"></script>
9497
<script src="/app/services/user.service.js"></script>
9598
<script src="/app/services/tcAuth.service.js"></script>
99+
<script src="/app/services/tags.service.js"></script>
96100
<script src="/app/services/srm.service.js"></script>
97101
<script src="/app/services/scorecard.service.js"></script>
98102
<script src="/app/services/review.service.js"></script>
@@ -150,20 +154,22 @@ <h1><a href="specs.html">Spec Runner</a></h1>
150154
<script src="/app/filters/deadline-msg.filter.js"></script>
151155
<script src="/app/directives/tcui-components.module.js"></script>
152156
<script src="/app/directives/tc-section/tc-section.directive.js"></script>
153-
<script src="/app/directives/tc-pager/tc-pager.directive.js"></script>
157+
<script src="/app/directives/tc-paginator/tc-paginator.directive.js"></script>
154158
<script src="/app/directives/srm-tile/srm-tile.directive.js"></script>
155159
<script src="/app/directives/slideable.directive.js"></script>
156160
<script src="/app/directives/skill-tile/skill-tile.directive.js"></script>
157161
<script src="/app/directives/right-placeholder.directive.js"></script>
158162
<script src="/app/directives/profile-widget/profile-widget.directive.js"></script>
159163
<script src="/app/directives/on-file-change.directive.js"></script>
164+
<script src="/app/directives/history-graph/history-graph.directive.js"></script>
160165
<script src="/app/directives/focus-on.directive.js"></script>
161166
<script src="/app/directives/distribution-graph/distribution-graph.directive.js"></script>
162167
<script src="/app/directives/challenge-tiles/challenge-tile.directive.js"></script>
163168
<script src="/app/directives/badges/badge-tooltip.directive.js"></script>
164169
<script src="/app/directives/account/validate-register.directive.js"></script>
165170
<script src="/app/directives/account/validate-login.directive.js"></script>
166171
<script src="/app/directives/account/validate-email.directive.js"></script>
172+
<script src="/app/directives/account/toggle-password-with-tips/toggle-password-with-tips.directive.js"></script>
167173
<script src="/app/directives/account/toggle-password/toggle-password.directive.js"></script>
168174
<script src="/app/blocks/logger/logger.module.js"></script>
169175
<script src="/app/blocks/logger/logger.js"></script>
@@ -184,8 +190,8 @@ <h1><a href="specs.html">Spec Runner</a></h1>
184190
<!-- inject:specs:js -->
185191
<script src="/app/topcoder.interceptors.spec.js"></script>
186192
<script src="/app/filters/filters.spec.js"></script>
187-
<script src="/app/my-dashboard/my-dashboard.spec.js"></script>
188193
<script src="/app/my-challenges/my-challenges.spec.js"></script>
194+
<script src="/app/my-dashboard/my-dashboard.spec.js"></script>
189195
<script src="/app/my-srms/my-srms.spec.js"></script>
190196
<script src="/app/profile/profile.controller.spec.js"></script>
191197
<script src="/app/services/authToken.service.spec.js"></script>
@@ -196,29 +202,32 @@ <h1><a href="specs.html">Spec Runner</a></h1>
196202
<script src="/app/services/tcAuth.service.spec.js"></script>
197203
<script src="/app/services/user.service.spec.js"></script>
198204
<script src="/app/settings/settings.spec.js"></script>
205+
<script src="/app/skill-picker/skill-picker.spec.js"></script>
206+
<script src="/app/account/login/login.spec.js"></script>
199207
<script src="/app/account/register/register.spec.js"></script>
200208
<script src="/app/account/reset-password/reset-password.spec.js"></script>
201-
<script src="/app/account/login/login.spec.js"></script>
202-
<script src="/app/directives/challenge-tiles/challenge-tile.spec.js"></script>
203-
<script src="/app/directives/badges/badge-tooltip.spec.js"></script>
204209
<script src="/app/blocks/exception/exception-handler.provider.spec.js"></script>
210+
<script src="/app/directives/badges/badge-tooltip.spec.js"></script>
211+
<script src="/app/directives/challenge-tiles/challenge-tile.spec.js"></script>
212+
<script src="/app/directives/tc-paginator/tc-paginator.spec.js"></script>
205213
<script src="/app/my-dashboard/community-updates/community-updates.spec.js"></script>
206-
<script src="/app/my-dashboard/header-dashboard/header-dashboard.spec.js"></script>
207214
<script src="/app/my-dashboard/my-challenges/my-challenges.spec.js"></script>
215+
<script src="/app/my-dashboard/header-dashboard/header-dashboard.spec.js"></script>
208216
<script src="/app/my-dashboard/programs/programs.spec.js"></script>
209217
<script src="/app/my-dashboard/srms/srms.spec.js"></script>
210218
<script src="/app/peer-review/completed-review/completed-review.spec.js"></script>
211219
<script src="/app/peer-review/edit-review/edit-review.spec.js"></script>
212220
<script src="/app/peer-review/readOnlyScorecard/readOnlyScorecard.spec.js"></script>
213221
<script src="/app/peer-review/review-status/review-status.spec.js"></script>
214-
<script src="/app/profile/badges/badges.spec.js"></script>
215222
<script src="/app/profile/about/about.controller.spec.js"></script>
223+
<script src="/app/profile/badges/badges.spec.js"></script>
216224
<script src="/app/profile/subtrack/subtrack.spec.js"></script>
217-
<script src="/app/settings/account-info/account-info.spec.js"></script>
218225
<script src="/app/settings/edit-profile/edit-profile.spec.js"></script>
219226
<script src="/app/settings/preferences/preferences.spec.js"></script>
227+
<script src="/app/settings/account-info/account-info.spec.js"></script>
220228
<script src="/app/settings/update-password/update-password.spec.js"></script>
221229
<script src="/app/directives/account/toggle-password/toggle-password.spec.js"></script>
230+
<script src="/app/directives/account/toggle-password-with-tips/toggle-password-with-tips.spec.js"></script>
222231
<!-- endinject -->
223232

224233
<!-- inject:templates:js -->

0 commit comments

Comments
 (0)