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

Commit 4977f96

Browse files
author
Parth Shah
committed
SUP-1317 add / hide skills
1 parent a161cf1 commit 4977f96

File tree

8 files changed

+66
-20
lines changed

8 files changed

+66
-20
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.tagName}}

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

Lines changed: 20 additions & 2 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) {
4647
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/index.jade

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ html
9090
script(src='../bower_components/angucomplete-alt/angucomplete-alt.js')
9191
script(src='../bower_components/angular-cookies/angular-cookies.js')
9292
script(src='../bower_components/angular-dropdowns/dist/angular-dropdowns.js')
93-
script(src='../bower_components/angular-filter/dist/angular-filter.min.js')
93+
script(src='../bower_components/angular-filter/dist/angular-filter.js')
9494
script(src='../bower_components/angular-img-fallback/angular.dcb-img-fallback.js')
9595
script(src='../bower_components/angular-jwt/dist/angular-jwt.js')
9696
script(src='../bower_components/angular-sanitize/angular-sanitize.js')

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: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
updateUserProfile: updateUserProfile,
1616
getUserSkills: getUserSkills,
1717
addUserSkill: addUserSkill,
18+
hideUserSkill: hideUserSkill,
1819
getUserFinancials: getUserFinancials,
1920
getUserStats: getUserStats,
2021
getDistributionStats: getDistributionStats,
@@ -42,11 +43,16 @@
4243
function getUserSkills(username) {
4344
return restangular.one('members', username).one('skills').get();
4445
}
45-
46+
4647
function addUserSkill(username, skillTagId) {
47-
var body = {};
48-
body[skillTagId] = { 'hidden': false };
49-
return restangular.one('members', username).one('skills').patch(JSON.stringify(body));
48+
var body = { skills:{} };
49+
body['skills'][skillTagId] = { 'hidden': false };
50+
return restangular.one('members', username).one('skills').patch(body);
51+
}
52+
function hideUserSkill(username, skillTagId) {
53+
var body = { skills:{} };
54+
body['skills'][skillTagId] = { 'hidden': true };
55+
return restangular.one('members', username).one('skills').patch(body);
5056
}
5157

5258
function getUserFinancials(username) {

app/services/tags.service.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33

44
angular.module('tc.services').factory('TagsService', TagsService);
55

6-
TagsService.$inject = ['ApiService'];
6+
TagsService.$inject = ['ApiService', '$q'];
77

8-
function TagsService(ApiService) {
8+
function TagsService(ApiService, $q) {
99
var api = ApiService.restangularV3;
10-
10+
1111
var service = {
1212
getApprovedSkillTags: function() {
13-
return api.one("tags").get({filter: 'domain=SKILLS&status=APPROVED'});
13+
return api.all("tags")
14+
.withHttpConfig({skipAuthorization: true})
15+
.getList({filter: 'domain=SKILLS&status=APPROVED'});
1416
}
1517
};
1618

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

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
processData(userData);
2525
vm.userData = userData;
26-
26+
2727
TagsService.getApprovedSkillTags()
2828
.then(function(tags) {
2929
vm.tags = tags;
@@ -40,10 +40,17 @@
4040
$log.error(err);
4141
});
4242
}
43-
43+
4444
function addSkill(skill) {
45-
var skillTagId = _.get(skill, 'originalObject.id');
46-
ProfileService.addUserSkill(vm.userData.handle, skillTagId);
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+
}
4754
}
4855

4956
function updateCountry(angucompleteCountryObj) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@
104104
)
105105

106106
.skills
107-
.skill(ng-repeat="skill in vm.skills")
108-
skill-tile(skill="skill")
107+
.skill(ng-repeat="skill in vm.skills | orderBy:'-score'")
108+
skill-tile(skill="skill" enable-hide="true")
109109

110110
.clearfix
111111

0 commit comments

Comments
 (0)