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

Commit ace9f74

Browse files
author
TonyJ
committed
Merge branch 'dev' into feature/member-page-updates
2 parents 82b29fb + d353889 commit ace9f74

File tree

151 files changed

+2658
-8542
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

151 files changed

+2658
-8542
lines changed

app/account/register/register.jade

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
input(ng-model="vm.username", ng-model-options="{ debounce: {'default': 500} }", ng-focus="vm.usernameTips = true", ng-blur="vm.usernameTips = false", ng-minlength="2", ng-maxlength="15", name="username", placeholder="Username", type="text", username-is-free, required)
4747

4848
.tips.username-tips(ng-show="vm.usernameTips")
49+
.arrow
4950
h3 Username Tips:
5051

5152
p Your username will be public
@@ -67,6 +68,7 @@
6768
input(ng-model="vm.email", ng-model-options="{ debounce: {'default': 500} }", ng-focus="vm.emailTips = true", ng-blur="vm.emailTips = false", name="email", placeholder="Enter Your Email", type="email", valid-email, email-is-available, required)
6869

6970
.tips.email-tips(ng-show="vm.emailTips")
71+
.arrow
7072
h3 Email Tips:
7173

7274
p Your email address will be private and not shared with anyone.
@@ -84,9 +86,10 @@
8486
toggle-password-with-tips(ng-if="!vm.isSocialRegistration")
8587

8688
.tips.password-tips(ng-show="vm.passwordFocus")
87-
h3 Password Tips:
89+
.arrow
90+
//- h3 Password Tips:
8891
89-
p Your password must have:
92+
H3 Your password must have:
9093

9194
p(ng-class="{ 'has-length-between-range': (vm.registerForm.password.$dirty && !vm.registerForm.password.$error.minlength && !vm.registerForm.password.$error.maxlength && !vm.registerForm.password.$error.required) }") At least 8 characters
9295

@@ -117,5 +120,4 @@
117120

118121
.join-topcoder
119122
span Have an account?  
120-
121123
a(ui-sref="login(vm.$stateParams)") Log in

app/account/reset-password/reset-password.jade

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
input(ng-model="vm.email", ng-focus="vm.emailTips = true", ng-blur="vm.emailTips = false", name="email", placeholder="EMAIL ADDRESS", type="email", valid-email, required)
1616

1717
.tips.email-tips(ng-show="vm.emailTips")
18+
.arrow
1819
h3 Email Tips:
1920

2021
p Enter your email address and we'll get back to you with a reset link
@@ -49,6 +50,7 @@
4950
toggle-password-with-tips
5051

5152
.tips.password-tips(ng-show="vm.passwordFocus")
53+
.arrow
5254
h3 Password Tips:
5355

5456
p(ng-class="{ 'has-length-between-range': (vm.resetPasswordForm.password.$dirty && !vm.resetPasswordForm.password.$error.minlength && !vm.resetPasswordForm.password.$error.maxlength && !vm.resetPasswordForm.password.$error.required) }") Must be between 8 and 64 characters

app/directives/busy-button/busy-button.directive.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,12 @@
2323
scope);
2424
element.attr('disabled', true).html('').append(busyMessageHtml);
2525
} else {
26-
// remove the disabled attribute only if either element does not have ng-disabled set
26+
// remove the disabled attribute only if either element does not have disabled set
2727
// or it evaluates to false
28-
if (!attr.ngDisabled || !$parse(attr.ngDisabled)) {
29-
element.removeAttr('disabled').html(scope.originalContent);
28+
if (!attrs.disabled) {
29+
element.removeAttr('disabled');
3030
}
31+
element.html(scope.originalContent);
3132
}
3233
});
3334
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
.stalled-challenge(ng-hide="challenge.userCurrentPhaseEndTime") This challenge is currently paused.
2222

2323
.phase-action(ng-switch="challenge.userAction")
24-
a.tc-btn.tc-btn-s.tc-btn-wide.tc-btn-ghost.submit(ng-switch-when="Submit") Submit
24+
a.tc-btn.tc-btn-s.tc-btn-wide.tc-btn-ghost.submit(ng-switch-when="Submit", ng-href="{{challenge|challengeLinks:'detail'}}") Submit
2525

2626
.submitted(ng-switch-when="Submitted") Submitted
2727

@@ -31,7 +31,7 @@
3131
// Only show if not data science track
3232
p.roles
3333
span(ng-hide="challenge.track === 'DATA_SCIENCE'")
34-
#[span Role:  ] #[span {{challenge.userDetails.roles | listRoles}}]
34+
#[span Role: ] #[span {{challenge.userDetails.roles | listRoles}}]
3535

3636
.completed-challenge(
3737
ng-show="challenge.status === 'COMPLETED' || challenge.status === 'PAST'",
@@ -65,7 +65,7 @@
6565
// Only show if not data science track
6666
p.roles
6767
span(ng-hide="challenge.track === 'DATA_SCIENCE'")
68-
#[span Role:  ] #[span {{challenge.userDetails.roles | listRoles}}]
68+
#[span Role: ] #[span {{challenge.userDetails.roles | listRoles}}]
6969

7070
.challenge.list-view(ng-show="view=='list'", ng-class="challenge.track")
7171
.active-challenge(ng-show="challenge.status === 'ACTIVE'")
@@ -76,7 +76,7 @@
7676

7777
p.subtrack-color {{challenge.subTrack | underscoreStrip}}
7878

79-
p.roles(ng-hide="challenge.track === 'DATA_SCIENCE'") #[span Role:  ] #[span {{challenge.userDetails.roles | listRoles}}]
79+
p.roles(ng-hide="challenge.track === 'DATA_SCIENCE'") #[span Role: ] #[span {{challenge.userDetails.roles | listRoles}}]
8080

8181
.challenge-details
8282
.challenge-info
@@ -87,7 +87,7 @@
8787
p.ends-in(ng-hide="challenge.userCurrentPhaseEndTime") This challenge is currently paused.
8888

8989
.phase-action(ng-switch="challenge.userAction")
90-
a.tc-btn.tc-btn-s.tc-btn-wide.tc-btn-ghost.submit(ng-switch-when="Submit") Submit
90+
a.tc-btn.tc-btn-s.tc-btn-wide.tc-btn-ghost.submit(ng-switch-when="Submit", ng-href="{{challenge|challengeLinks:'detail'}}") Submit
9191

9292
.submitted(ng-switch-when="Submitted") Submitted
9393

@@ -106,7 +106,7 @@
106106

107107
p.subtrack-color {{challenge.subTrack | underscoreStrip}}
108108

109-
p.roles(ng-hide="challenge.track === 'DATA_SCIENCE'") #[span Role:  ] #[span {{challenge.userDetails.roles | listRoles}}]
109+
p.roles(ng-hide="challenge.track === 'DATA_SCIENCE'") #[span Role: ] #[span {{challenge.userDetails.roles | listRoles}}]
110110

111111
.challenge-details(ng-switch-when="DATA_SCIENCE", ng-switch="challenge.subTrack", ng-class="challenge.track")
112112

app/directives/challenge-user-place/challenge-user-place.directive.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
if (!$scope.challenge.isPrivate && $scope.challenge.userDetails.submissions && $scope.challenge.userDetails.submissions.length > 0) {
4747
$scope.selectedIndex = 0;
4848
$scope.challenge.thumbnailId = $scope.challenge.userDetails.submissions[0].id;
49-
$scope.imageURL = $scope.challenge.userDetails.submissions[0].submissionImage;
49+
$scope.imageURL = $scope.challenge.userDetails.submissions[0].submissionImage && $scope.challenge.userDetails.submissions[0].submissionImage.full;
5050
$scope.selectedImage = $scope.imageURL;
5151

5252
$scope.challenge.highestPlacement = _.max($scope.challenge.userDetails.submissions, 'placement').placement;

app/directives/challenge-user-place/design-challenge-user-place.directive.jade

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,9 @@
44
p.place(ng-show="challenge.userStatus === 'PASSED_SCREENING'") Passed Screening
55
p.place(ng-show="challenge.userStatus === 'COMPLETED'") COMPLETED
66

7-
.thumbnail(ng-click="openLightbox()", ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
8-
img(ng-src="{{imageURL}}", fallback-src="/images/ico-picture.svg")
9-
10-
.thumbnail-gallery(ng-click="openLightbox()")
11-
.gallery-icon
12-
13-
.num-images 1 image
7+
.thumbnail(ng-click="!challenge.isPrivate && imageURL && openLightbox()", ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
8+
img(ng-show="!challenge.isPrivate", ng-src="{{imageURL || '/images/card-bg-no-image.svg'}}", fallback-src="/images/card-bg-no-image.svg")
9+
img(ng-show="challenge.isPrivate", src="/images/card-bg-private-project.svg")
1410

1511
.list-view(ng-show="view === 'list'")
1612
.place-date
@@ -22,10 +18,7 @@
2218

2319
.winner-ribbon(ng-show="challenge.wonFirst")
2420

25-
.thumbnail(ng-click="openLightbox()", ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
26-
img(ng-src="http://studio.{{DOMAIN}}/studio.jpg?module=DownloadSubmission&sbmid={{challenge.thumbnailId}}&sbt=full", fallback-src="/images/ico-picture.svg")
27-
28-
.thumbnail-gallery(ng-click="challenge.showLightbox()")
29-
.gallery-icon
3021

31-
.num-images 1 image
22+
.thumbnail(ng-click="!challenge.isPrivate && imageURL && openLightbox()", ng-class="{hidden: challenge.userStatus !== 'PASSED_REVIEW'}")
23+
img(ng-show="!challenge.isPrivate", ng-src="{{imageURL || '/images/card-bg-no-image.svg'}}", fallback-src="/images/ico-picture.svg")
24+
img(ng-show="challenge.isPrivate", src="/images/card-bg-private-project.svg")

app/directives/challenge-user-place/design-lightbox/design-lightbox.jade

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
.title {{challenge.name}}
77

88

9-
img(ng-src="{{selectedImage}}")
9+
img(
10+
ng-src="{{selectedImage}}",
11+
fallback-src="/images/card-bg-no-image.svg"
12+
)
1013

1114

1215
.info
@@ -15,9 +18,10 @@
1518
.selections
1619
img.selection(
1720
ng-repeat="submission in challenge.userDetails.submissions",
18-
ng-src="{{submission.submissionImage}}",
19-
ng-click="updateSelected(submission.submissionImage, $index)",
20-
ng-class="{'current': submission.submissionImage == selectedImage}"
21+
ng-src="{{currentImage = submission.submissionImage && submission.submissionImage.full}}",
22+
ng-click="updateSelected(currentImage, $index)",
23+
ng-class="{'current': currentImage == selectedImage}",
24+
fallback-src="/images/card-bg-no-image.svg"
2125
)
2226

2327
.right-nav

app/directives/track-toggle/track-toggle.directive.jade

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
.track(ng-repeat="track in ['DESIGN', 'DEVELOP', 'DATA_SCIENCE']")
2-
hr(class="{{!$index && 'first'}}")
32

4-
.content
3+
.content(class="{{!tracks[track] && 'disabled'}}")
54
.track-details
65
.icon(ng-class="{'disabled': !tracks[track]}")
76
img(ng-if="track == 'DATA_SCIENCE' && tracks[track]", src="/images/ico-track-data.svg")
@@ -23,5 +22,3 @@
2322
label.onoffswitch-label(for='{{track}}-onoffswitch')
2423
span.onoffswitch-inner
2524
span.onoffswitch-switch
26-
27-
hr.bottom

app/index.jade

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ html
2828
// build:css /styles/app.css
2929
//- inject:css
3030
link(rel="stylesheet", href="assets/css/reset.css")
31+
link(rel="stylesheet", href="assets/css/vendors/angucomplete.css")
3132
link(rel="stylesheet", href="assets/css/topcoder.css")
3233
link(rel="stylesheet", href="assets/css/skill-picker/skill-picker.css")
3334
link(rel="stylesheet", href="assets/css/sitemap/sitemap.css")

app/profile/subtrack/subtrack.controller.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
vm.back = back;
2626
vm.subTrackStats = [];
2727

28-
vm.pageName = vm.subTrack.toLowerCase().replace('_', ' ');
28+
vm.pageName = vm.subTrack.toLowerCase().replace(/_/g, ' ');
2929

3030
vm.tabs = [];
3131
if (vm.track !== 'DESIGN') {

app/profile/subtrack/subtrack.jade

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
responsive-carousel(data="vm.subTrackStats", handle="{{vm.handle}}")
1111
.carousel-elem
1212
.flex-wrapper
13-
p.title(ng-hide="true") {{item.subTrack | underscoreStrip}}
13+
p.title(ng-hide="true") {{item.subTrack | track}}
1414

1515
p.value(ng-show="item.label === 'rating'", style="color: {{item.val | ratingColor}}") {{item.val | empty}}
1616
span(style="background-color: {{item.val | ratingColor}}")
@@ -29,7 +29,7 @@
2929
responsive-carousel(data="vm.subTrackStats", handle="{{vm.handle}}")
3030
.carousel-elem
3131
.flex-wrapper
32-
p.title(ng-hide="true") {{item.subTrack | underscoreStrip}}
32+
p.title(ng-hide="true") {{item.subTrack | track}}
3333

3434
p.value(ng-show="item.label === 'rating'", style="color: {{item.val | ratingColor}}") {{item.val | empty}}
3535
span(style="background-color: {{item.val | ratingColor}}")

app/services/introduction.service.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -82,34 +82,39 @@
8282
},
8383
{
8484
// element: '#skills',
85-
intro: 'The quickest way to understand a member’s skills. It includes languages, environments, frameworks, libraries, platforms, tools, and any other technologies that you know well.',
85+
intro: 'The quickest way to understand a member’s skills. It includes languages, environments, frameworks, libraries, platforms, tools, and any other technologies that the members knows well.',
8686
position: 'top'
8787
},
8888
{
8989
// element: '#tcActivity',
90-
intro: 'Topcoder activity, ratings and other statistics now live in this section. See the active sub-tracks and click on them for even more details and history.',
90+
intro: 'See the active sub-tracks and click on them for ratings, charts, history and even more details.',
9191
position: 'top'
9292
},
9393
{
9494
// element: '#externalLinks',
95-
intro: 'Best of member’s presence on the web will be highlighted here. Show off your work and experience outside of Topcoder by connecting accounts or adding links.',
95+
intro: 'View the best of your presence on the web: show off your work and experience outside of Topcoder by connecting accounts or adding links.',
9696
position: 'top'
9797
}
9898
]
9999
},
100100
subtrack: {
101101
steps: [
102102
{
103-
intro: 'Welcome to the new Sub-track details page. This page contains activity in this track and in-depth metrics in an easy-to-understand way.'
103+
intro: 'Welcome to the new Sub-track details page. This page contains activity in this track, in-depth metrics and history in an easy-to-understand way.'
104104
},
105105
{
106106
// element: '#subtrack-stats',
107-
intro: 'Find the most important metrics here to understand performance in a glance. You can scroll below to see charts and more in-depth metrics to get a very granular understanding of the activity in this subtrack.',
107+
intro: 'Find the most important metrics here to understand performance in a glance.',
108108
position: 'bottom'
109109
},
110110
{
111111
// element: '#challenges-tab',
112-
intro: 'This sections contains all the completed challenges, in order of success.',
112+
intro: 'View all the successfully completed challenges for the member in this sub-track.',
113+
position: 'top'
114+
},
115+
{
116+
// element: '#challenges-tab',
117+
intro: 'View charts and more in-depth metrics to get a very granular understanding of the activity in this sub-track.',
113118
position: 'top'
114119
}
115120
]
@@ -118,7 +123,7 @@
118123
dashboard: {
119124
steps: [
120125
{
121-
intro: 'Welcome to your new Topcoder Dashboard. We have revamped the dashboard to bring to fore the information that matters to you. Let us walk you through some of the new things to help you keep on top of your Topcoder activity.'
126+
intro: 'Welcome to the your new Topcoder Dashboard. We have revamped the dashboard to bring to fore the information that matters to you. Lets walk through some of the new features.'
122127
},
123128
{
124129
// element: '#metrics',
@@ -132,12 +137,7 @@
132137
},
133138
{
134139
// element: '#challenges',
135-
intro: 'All your active challenges can be found here. See the phase, and activity on here, or click on them to go to the challenge details. You can view these in a grid or list view.',
136-
position: 'top'
137-
},
138-
{
139-
// element: '#viewAllChallenges',
140-
intro: 'Want to see more of the challenges? Or look up a past one? Click on the buttons here to see all of your challenges.',
140+
intro: 'View your active challenges on the dashboard in a grid or list view. You can find the phase, and activity on here, or can click on them to go to the challenge details.',
141141
position: 'top'
142142
},
143143
{

app/settings/account-info/account-info.controller.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
vm.formProcessing.accountInfoForm = false;
7878
toaster.pop('success', "Success!", "Your account information was updated.");
7979
for (var k in vm.userData) userData[k] = vm.userData[k];
80+
vm.accountInfoForm.$setPristine();
8081
})
8182
.catch(function() {
8283
vm.formProcessing.accountInfoForm = false;

app/settings/account-info/account-info.jade

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
.account-info-container
22
.settings-section.credentials
33
.section-info
4-
h2 credentials
4+
h2 Credentials
55
.description Used to log in to your account and cannot be edited. Please contact [email protected] if you need to make changes.
66

77
.section-fields
88
.form-label.username Username
99
input.form-field.grey(name="username", value="{{vm.userData.handle}}", disabled=true)
1010

11-
.form-label email
11+
.form-label Email
1212
input.form-field.grey(name="email", value="{{vm.userData.email}}", disabled=true)
1313

1414
div(ng-hide="vm.isSocialRegistration")
@@ -31,6 +31,7 @@
3131
placeholder="Pick a new password"
3232
)
3333
.tips.password-tips(ng-show="vm.passwordFocus")
34+
.arrow
3435
h3 Password Tips:
3536

3637
p Your password must have:
@@ -42,7 +43,7 @@
4243
p(ng-class="{ 'has-symbol-or-number': (vm.newPasswordForm.password.$dirty && !vm.newPasswordForm.password.$error.hasSymbolOrNumber) }") At least one number or symbol
4344

4445
.button-container
45-
button.tc-btn.tc-btn-l.save(type="submit", tc-busy-button, tc-busy-when="vm.formProcessing.newPasswordForm", ng-disabled="vm.newPasswordForm.$invalid || vm.newPasswordForm.$pristine", ng-class="{'disabled': vm.newPasswordForm.$invalid || vm.newPasswordForm.$pristine}") Change Password
46+
button.tc-btn.save(type="submit", tc-busy-button, tc-busy-when="vm.formProcessing.newPasswordForm", ng-disabled="vm.newPasswordForm.$invalid || vm.newPasswordForm.$pristine", ng-class="{'disabled': vm.newPasswordForm.$invalid || vm.newPasswordForm.$pristine}") Change Password
4647

4748

4849
div(ng-show="vm.isSocialRegistration")
@@ -163,4 +164,4 @@
163164

164165

165166
.save-section
166-
button.save.tc-btn.tc-btn-l(type="submit", tc-busy-button, tc-busy-when="vm.formProcessing.accountInfoForm", ng-disabled="vm.accountInfoForm.$invalid", ng-class="{'enabled-button': vm.accountInfoForm.$valid, 'disabled': vm.accountInfoForm.$invalid || vm.accountInfoForm.$pristine}", ng-click="vm.accountInfoForm.$valid && vm.accountInfoForm.$dirty && vm.saveAccountInfo()") Save
167+
button.save.tc-btn.tc-btn-wide(type="submit", tc-busy-button, tc-busy-when="vm.formProcessing.accountInfoForm", ng-disabled="vm.accountInfoForm.$invalid || vm.accountInfoForm.$pristine", ng-class="{'enabled-button': vm.accountInfoForm.$valid}", ng-click="vm.accountInfoForm.$valid && vm.accountInfoForm.$dirty && vm.saveAccountInfo()") Save

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

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,13 @@
3535

3636
processData(vm.userData);
3737

38-
$scope.tracks = vm.tracks;
39-
$scope.$watch('tracks', function watcher() {
40-
if (!tracksValid()) {
41-
toaster.pop('error', "Error", "Please select at least one track.");
42-
}
43-
}, true);
38+
// commenting out since this might come back
39+
// $scope.tracks = vm.tracks;
40+
// $scope.$watch('tracks', function watcher() {
41+
// if (!tracksValid()) {
42+
// toaster.pop('error', "Error", "Please select at least one track.");
43+
// }
44+
// }, true);
4445

4546
ExternalAccountService.getLinkedExternalAccounts(vm.userData.userId).then(function(data) {
4647
vm.linkedExternalAccounts = data;
@@ -117,6 +118,10 @@
117118
}
118119

119120
function updateProfile() {
121+
if (!vm.tracksValid()) {
122+
toaster.pop('error', "Error", "Please select at least one track.");
123+
return false;
124+
}
120125
vm.profileFormProcessing = true;
121126
vm.userData.tracks = _.reduce(vm.tracks, function(result, isInterested, trackName) {
122127
if (isInterested) {
@@ -128,6 +133,7 @@
128133
ProfileService.updateUserProfile(vm.userData)
129134
.then(function() {
130135
vm.profileFormProcessing = false;
136+
vm.editProfile.$setPristine();
131137
$log.info('Saved successfully');
132138
toaster.pop('success', "Success!", "Your account information was updated.");
133139
for (var k in vm.userData) userData[k] = vm.userData[k];

0 commit comments

Comments
 (0)