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

Commit 738df06

Browse files
author
Nick Litwin
committed
Add desktop view and link up to api
1 parent 54c2b5d commit 738df06

File tree

6 files changed

+261
-95
lines changed

6 files changed

+261
-95
lines changed

app/index.jade

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ html
200200
script(src="services/review.service.js")
201201
script(src="services/scorecard.service.js")
202202
script(src="services/srm.service.js")
203+
script(src="services/tags.service.js")
203204
script(src="services/tcAuth.service.js")
204205
script(src="services/user.service.js")
205206
script(src="settings/settings.module.js")

app/services/profile.service.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
getUserProfile: getUserProfile,
1515
updateUserProfile: updateUserProfile,
1616
getUserSkills: getUserSkills,
17+
updateUserSkills: updateUserSkills,
1718
getUserFinancials: getUserFinancials,
1819
getUserStats: getUserStats,
1920
getDistributionStats: getDistributionStats,
@@ -42,6 +43,11 @@
4243
return restangular.one('members', username).one('skills').get();
4344
}
4445

46+
function updateUserSkills(body) {
47+
var username = UserService.getUserIdentity().handle;
48+
return restangular.one('members', username).one('skills').patch(body);
49+
}
50+
4551
function getUserFinancials(username) {
4652
return restangular.one('members', username).one('financial').get();
4753
}

app/services/tags.service.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
(function() {
2+
'use strict';
3+
4+
angular.module('tc.services').factory('TagsService', TagsService);
5+
6+
TagsService.$inject = ['ApiService'];
7+
8+
function TagsService(ApiService) {
9+
10+
var api = ApiService.restangularV3;
11+
12+
var service = {
13+
getTags: getTags,
14+
};
15+
return service;
16+
17+
/////////////////////////////////////////
18+
19+
function getTags() {
20+
return api.all('tags').getList();
21+
}
22+
}
23+
24+
})();

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

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,27 @@
33

44
angular.module('tc.skill-picker').controller('SkillPickerController', SkillPickerController);
55

6-
SkillPickerController.$inject = [];
6+
SkillPickerController.$inject = ['ProfileService', '$state', 'TagsService', '$log'];
77

8-
function SkillPickerController() {
8+
function SkillPickerController(ProfileService, $state, TagsService, $log) {
99
var vm = this;
1010
vm.toggleSkill = toggleSkill;
1111
vm.selectTrack = selectTrack;
12+
vm.submitSkills = submitSkills;
1213

1314
activate();
1415

1516
function activate() {
17+
TagsService.getTags()
18+
.then(function(res) {
19+
// console.log('tags: ', res);
20+
})
21+
.catch(function(err) {
22+
$log.error(err);
23+
});
24+
25+
vm.noTrackSelected = true;
26+
1627
vm.tracks = {
1728
design: false,
1829
develop: false,
@@ -21,8 +32,8 @@
2132

2233
vm.skills = {
2334
design: ['Photoshop', 'Illustrator', 'InDesign', 'UX', 'UI', 'Sketch'],
24-
develop: ['Java', 'JavaScript', 'Ruby', 'Objective C', 'Python', 'SASS', 'HTML', 'CSS', 'LESS', 'C#', 'iOS', 'C++', 'Xcode', '.NET', 'PHP', 'MySQL', 'MongoDB'],
25-
data_science: ['Java', 'Algorithms', 'Ruby', 'Objective C', 'Python', 'SASS', 'HTML', 'CSS', 'LESS', 'C#', 'iOS', 'C++', 'Xcode', '.NET', 'PHP', 'MySQL', 'MongoDB']
35+
develop: ['Java', 'JavaScript', 'Ruby', 'Objective C', 'Python', 'SASS', 'HTML', 'CSS', 'LESS', 'C#', 'iOS', 'C++', 'PHP', 'MySQL', 'MongoDB'],
36+
data_science: ['Java', 'Algorithms', 'Ruby', 'Objective C', 'Python', 'SASS', 'HTML', 'CSS', 'LESS', 'C#', 'iOS', 'C++', 'PHP', 'MySQL', 'MongoDB']
2637
};
2738

2839
vm.selectedSkills = {
@@ -39,14 +50,15 @@
3950
}
4051

4152
function toggleSkill(track, skill) {
42-
var selectedSkill = vm.selectedSkills[track][skill];
43-
if (!selectedSkill) {
44-
selectedSkill = true;
45-
vm.selectedSkills[track].numSkills += 1;
53+
var track = vm.selectedSkills[track];
54+
55+
if (!track[skill]) {
56+
track[skill] = true;
57+
track.numSkills += 1;
4658

4759
} else {
48-
selectedSkill = false;
49-
vm.selectedSkills[track].numSkills -= 1;
60+
track[skill] = false;
61+
track.numSkills -= 1;
5062
}
5163
}
5264

@@ -57,5 +69,17 @@
5769

5870
vm.tracks[track] = !vm.tracks[track];
5971
}
72+
73+
function submitSkills() {
74+
ProfileService.updateUserSkills({id: 247, "hidden": false})
75+
.then(function(res) {
76+
$log.info("res: ");
77+
$log.info(res);
78+
// $state.go('dashboard');
79+
})
80+
.catch(function(err) {
81+
$log.error(err);
82+
});
83+
}
6084
}
6185
})();

app/skill-picker/skill-picker.jade

Lines changed: 66 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
.skill-picker-container
22
h1 Welcome to Topcoder!
33

4-
p Pick your tracks and select relevant skills. This helps to get you into the community and find appropriate competitions.
4+
p.instruction Pick your tracks and select relevant skills. This helps to get you into the community and find appropriate competitions.
55

66
.track-picker
77
h1 Tell us what you do
88

9-
.select-tracks.mobile
9+
.mobile
1010
.track-section
1111
.track-button(ng-class="{'button-expanded': vm.dropdown.design}")
1212
.track-checkbox
@@ -16,41 +16,84 @@
1616

1717
span.subscript [{{vm.selectedSkills.design.numSkills}}]
1818

19-
.dropdown-mobile(ng-click="vm.dropdown.design = !vm.dropdown.design")
19+
.dropdown(ng-click="vm.dropdown.design = !vm.dropdown.design")
2020
i.fa(ng-class="{'fa-caret-down': !vm.dropdown.design, 'fa-caret-up': vm.dropdown.design}")
2121

2222
.track-skills(ng-show="vm.dropdown.design")
2323
.track-skill(ng-repeat="skill in vm.skills.design", ng-click="vm.toggleSkill('design', skill)", ng-class="{'skill-selected': vm.selectedSkills.design[skill]}") {{skill}}
2424

25+
.track-section
26+
.track-button(ng-class="{'button-expanded': vm.dropdown.develop}")
27+
.track-checkbox
28+
input(type="checkbox", id="checkbox-develop-mobile", ng-checked="vm.tracks.develop")
29+
30+
label(for="checkbox-develop-mobile", ng-click="vm.selectTrack('develop')", ng-class="{ 'checked-track': vm.tracks.develop }") #[span] Development
31+
32+
span.subscript [{{vm.selectedSkills.develop.numSkills}}]
33+
34+
.dropdown(ng-click="vm.dropdown.develop = !vm.dropdown.develop")
35+
i.fa(ng-class="{'fa-caret-down': !vm.dropdown.develop, 'fa-caret-up': vm.dropdown.develop}")
36+
37+
.track-skills(ng-show="vm.dropdown.develop")
38+
.track-skill(ng-repeat="skill in vm.skills.develop", ng-click="vm.toggleSkill('develop', skill)", ng-class="{'skill-selected': vm.selectedSkills.develop[skill]}") {{skill}}
2539

26-
.track-button(ng-class="{'button-expanded': vm.dropdown.develop}")
27-
.track-checkbox
28-
input(type="checkbox", id="checkbox-develop-mobile", ng-checked="vm.tracks.develop")
40+
.track-section
41+
.track-button(ng-class="{'button-expanded': vm.dropdown.data_science}")
42+
.track-checkbox
43+
input(type="checkbox", id="checkbox-data-science-mobile", ng-checked="vm.tracks.data_science")
44+
45+
label(for="checkbox-data-science-mobile", ng-click="vm.selectTrack('data_science')", ng-class="{ 'checked-track': vm.tracks.data_science }") #[span] Data Science
2946

30-
label(for="checkbox-develop-mobile", ng-click="vm.selectTrack('develop')", ng-class="{ 'checked-track': vm.tracks.develop }") #[span] Development
47+
span.subscript [{{vm.selectedSkills.data_science.numSkills}}]
3148

32-
span.subscript [{{vm.selectedSkills.develop.numSkills}}]
49+
.dropdown(ng-click="vm.dropdown.data_science = !vm.dropdown.data_science")
50+
i.fa(ng-class="{'fa-caret-down': !vm.dropdown.data_science, 'fa-caret-up': vm.dropdown.data_science}")
3351

34-
.dropdown-mobile(ng-click="vm.dropdown.develop = !vm.dropdown.develop")
35-
i.fa(ng-class="{'fa-caret-down': !vm.dropdown.develop, 'fa-caret-up': vm.dropdown.develop}")
52+
.track-skills(ng-show="vm.dropdown.data_science")
53+
.track-skill(ng-repeat="skill in vm.skills.data_science", ng-click="vm.toggleSkill('data_science', skill)", ng-class="{'skill-selected': vm.selectedSkills.data_science[skill]}") {{skill}}
3654

37-
.track-skills(ng-show="vm.dropdown.develop")
38-
.track-skill(ng-repeat="skill in vm.skills.develop", ng-click="vm.toggleSkill('develop', skill)", ng-class="{'skill-selected': vm.selectedSkills.develop[skill]}") {{skill}}
55+
p.reminder Please pick at least one track, you can always change it later.
56+
57+
.desktop
58+
.track-buttons
59+
.track-button(ng-click="vm.selectTrack('design')")
60+
.track-checkbox
61+
input(type="checkbox", id="checkbox-design-mobile", ng-checked="vm.tracks.design")
62+
63+
label(for="checkbox-design-mobile", ng-class="{ 'checked-track': vm.tracks.design }") #[span] Design
64+
65+
span.subscript [{{vm.selectedSkills.design.numSkills}}]
66+
67+
.dropdown
68+
i.fa(ng-class="{'fa-caret-down': vm.dropdown.design}")
69+
70+
.track-button(ng-click="vm.selectTrack('develop')")
71+
.track-checkbox
72+
input(type="checkbox", id="checkbox-develop-mobile", ng-checked="vm.tracks.develop")
73+
74+
label(for="checkbox-develop-mobile", ng-class="{ 'checked-track': vm.tracks.develop }") #[span] Development
75+
76+
span.subscript [{{vm.selectedSkills.develop.numSkills}}]
77+
78+
.dropdown
79+
i.fa(ng-class="{'fa-caret-down': vm.dropdown.develop}")
80+
81+
.track-button(ng-click="vm.selectTrack('data_science')")
82+
.track-checkbox
83+
input(type="checkbox", id="checkbox-data-science-mobile", ng-checked="vm.tracks.data_science")
3984

40-
.track-button(ng-class="{'button-expanded': vm.dropdown.data_science}")
41-
.track-checkbox
42-
input(type="checkbox", id="checkbox-data-science-mobile", ng-checked="vm.tracks.data_science")
85+
label(for="checkbox-data-science-mobile", ng-class="{ 'checked-track': vm.tracks.data_science }") #[span] Data Science
4386

44-
label(for="checkbox-data-science-mobile", ng-click="vm.selectTrack('data_science')", ng-class="{ 'checked-track': vm.tracks.data_science }") #[span] Data Science
87+
span.subscript [{{vm.selectedSkills.data_science.numSkills}}]
4588

46-
span.subscript [{{vm.selectedSkills.data_science.numSkills}}]
89+
.dropdown
90+
i.fa(ng-class="{'fa-caret-down': vm.dropdown.data_science}")
4791

48-
.dropdown-mobile(ng-click="vm.dropdown.data_science = !vm.dropdown.data_science")
49-
i.fa(ng-class="{'fa-caret-down': !vm.dropdown.data_science, 'fa-caret-up': vm.dropdown.data_science}")
92+
.skills-tab
93+
.choose-prompt(ng-show="false") Please pick at least one track, you can always change it later.
5094

51-
.track-skills(ng-show="vm.dropdown.data_science")
52-
.track-skill(ng-repeat="skill in vm.skills.data_science", ng-click="vm.toggleSkill('data_science', skill)", ng-class="{'skill-selected': vm.selectedSkills.data_science[skill]}") {{skill}}
95+
.track-skills
96+
.track-skill(ng-hide="false", ng-repeat="skill in vm.skills.data_science", ng-click="vm.toggleSkill('data_science', skill)", ng-class="{'skill-selected': vm.selectedSkills.data_science[skill]}") {{skill}}
5397

54-
p.reminder Please pick at least one track, you can always change it later.
5598

56-
button(type="button", ng-class="{'enabled-button': vm.tracks.design || vm.tracks.develop || vm.tracks.data_science}") Done
99+
button(type="button", ng-click="vm.submitSkills()", ng-class="{'enabled-button': vm.tracks.design || vm.tracks.develop || vm.tracks.data_science}") Done

0 commit comments

Comments
 (0)