diff --git a/Gruntfile.js b/Gruntfile.js
index c04a7d8f..99fbd5f3 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -59,7 +59,7 @@ module.exports = function(grunt) {
cbURL: grunt.option('cb-url') || 'https://coderbits.com',
blogRSSFeedURL: grunt.option('blog-rss-feed') || 'https://www.topcoder.com/feed/?post_type=blog',
- photoLinkBaseURL: grunt.option('photo-link-base') || 'http://community.topcoder.com',
+ photoLinkBaseURL: grunt.option('photo-link-base') || 'https://www.topcoder.com',
marketingMessageMyDashURL: grunt.option('marketing-message-my-dash-url') || 'https://banners-r-us.herokuapp.com/serve?size=650x150'
};
diff --git a/src/conf/build-dev.sh b/src/conf/build-dev.sh
index 76521c2f..c6184a41 100755
--- a/src/conf/build-dev.sh
+++ b/src/conf/build-dev.sh
@@ -1 +1 @@
-grunt --main-url=https://www.topcoder-dev.com --auth-main-url=topcoder-dev.auth0.com --auth-client-id=JFDo7HMkf0q2CkVFHojy3zHWafziprhT --auth-callback-url=https://www.topcoder-dev.com/reg2/callback.action --api-url=https://api.topcoder-dev.com/v2 --lc-url=https://dev-lc1-ext-challenge-service.herokuapp.com --lc-discussion-url=https://dev-lc1-discussion-service.herokuapp.com --lc-user-url=https://dev-lc1-user-service.herokuapp.com --lc-site-url=https://dev-lc1-challenge-app.herokuapp.com --my-filters-url=https://staging-user-settings-service.herokuapp.com --community-url=//community.topcoder-dev.com --photo-link-base=http://community.topcoder-dev.com --review-app-url=software.topcoder-dev.com/review --help-app-url=help.topcoder-dev.com --forums-app-url=forums.topcoder-dev.com --swift-program-id=3445 --blog-rss-feed="https://www.topcoder-dev.com/feed/?post_type=blog" --api3-url=https://api.topcoder-dev.com/v3 --use-cdn=1 --use-min=1
+grunt --main-url=https://www.topcoder-dev.com --auth-main-url=topcoder-dev.auth0.com --auth-client-id=JFDo7HMkf0q2CkVFHojy3zHWafziprhT --auth-callback-url=https://www.topcoder-dev.com/reg2/callback.action --api-url=https://api.topcoder-dev.com/v2 --lc-url=https://dev-lc1-ext-challenge-service.herokuapp.com --lc-discussion-url=https://dev-lc1-discussion-service.herokuapp.com --lc-user-url=https://dev-lc1-user-service.herokuapp.com --lc-site-url=https://dev-lc1-challenge-app.herokuapp.com --my-filters-url=https://staging-user-settings-service.herokuapp.com --community-url=//community.topcoder-dev.com --photo-link-base=https://www.topcoder-dev.com --review-app-url=software.topcoder-dev.com/review --help-app-url=help.topcoder-dev.com --forums-app-url=forums.topcoder-dev.com --swift-program-id=3445 --blog-rss-feed="https://www.topcoder-dev.com/feed/?post_type=blog" --api3-url=https://api.topcoder-dev.com/v3 --use-cdn=1 --use-min=1
diff --git a/src/conf/build-qa.sh b/src/conf/build-qa.sh
index 23312aed..19bf2a35 100755
--- a/src/conf/build-qa.sh
+++ b/src/conf/build-qa.sh
@@ -1 +1 @@
-grunt --main-url=https://www.topcoder-qa.com --auth-main-url=topcoder-qa.auth0.com --auth-client-id=EVOgWZlCtIFlbehkq02treuRRoJk12UR --auth-callback-url="https://www.topcoder-qa.com/reg2/callback.action" --api-url=https://api.topcoder-qa.com/v2 --lc-url=https://qa-lc1-ext-challenge-service.herokuapp.com --lc-discussion-url=https://qa-lc1-discussion-service.herokuapp.com --lc-user-url=https://qa-lc1-user-service.herokuapp.com --lc-site-url=https://qa-lc1-challenge-app.herokuapp.com --my-filters-url=https://staging-user-settings-service.herokuapp.com --community-url=//community.topcoder-qa.com --photo-link-base=http://community.topcoder-qa.com --review-app-url=software.topcoder-qa.com/review --help-app-url=help.topcoder-qa.com --forums-app-url=forums.topcoder-qa.com --swift-program-id=3445 --blog-rss-feed="https://www.topcoder-qa.com/feed/?post_type=blog" --api3-url=https://api.topcoder-qa.com/v3 --use-cdn=1 --use-min=1
\ No newline at end of file
+grunt --main-url=https://www.topcoder-qa.com --auth-main-url=topcoder-qa.auth0.com --auth-client-id=EVOgWZlCtIFlbehkq02treuRRoJk12UR --auth-callback-url="https://www.topcoder-qa.com/reg2/callback.action" --api-url=https://api.topcoder-qa.com/v2 --lc-url=https://qa-lc1-ext-challenge-service.herokuapp.com --lc-discussion-url=https://qa-lc1-discussion-service.herokuapp.com --lc-user-url=https://qa-lc1-user-service.herokuapp.com --lc-site-url=https://qa-lc1-challenge-app.herokuapp.com --my-filters-url=https://staging-user-settings-service.herokuapp.com --community-url=//community.topcoder-qa.com --photo-link-base=https://www.topcoder-qa.com --review-app-url=software.topcoder-qa.com/review --help-app-url=help.topcoder-qa.com --forums-app-url=forums.topcoder-qa.com --swift-program-id=3445 --blog-rss-feed="https://www.topcoder-qa.com/feed/?post_type=blog" --api3-url=https://api.topcoder-qa.com/v3 --use-cdn=1 --use-min=1
\ No newline at end of file
diff --git a/src/conf/tc-nginx.conf b/src/conf/tc-nginx.conf
index 10998e33..d6208c65 100644
--- a/src/conf/tc-nginx.conf
+++ b/src/conf/tc-nginx.conf
@@ -70,7 +70,7 @@ server {
}
location ~ ^/fonts/ {
- add_header 'Access-Control-Allow-Origin' "$http_origin" always;
+ add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Headers' "Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since" always;
root $root_base/dist;
}
diff --git a/src/css/my-dashboard.css b/src/css/my-dashboard.css
index 5d745d78..8230463f 100644
--- a/src/css/my-dashboard.css
+++ b/src/css/my-dashboard.css
@@ -362,8 +362,30 @@
background: url("../i/ico-track-design.png") no-repeat center center;
}
-.my-challenges th {
+.my-challenges table > thead > tr > th {
text-align: center;
+ white-space: nowrap;
+ padding-left: 13px;
+ padding-right: 13px;
+}
+
+.my-challenges th .sort,
+.my-challenges th .sort-icon-place {
+ width: 100%;
+ height: 12px;
+
+}
+
+.my-challenges th[rel="sortable"] {
+ cursor: pointer;
+}
+
+.my-challenges th .sort.asc {
+ background: #f5f5f5 url("../i/sort-arrows.png") no-repeat center -94px;
+}
+
+.my-challenges th .sort.desc {
+ background: #f5f5f5 url("../i/sort-arrows.png") no-repeat center 6px;
}
.my-challenges table > tbody> tr > td {
@@ -378,6 +400,7 @@
.my-challenges td[rel="challenge-name"] {
text-align: left;
+ /*max-width: 320px;*/
}
.my-challenges td[rel="challenge-name"] > a {
@@ -405,6 +428,25 @@
text-align: center;
}
+.upcoming-srms-div th .sort,
+.upcoming-srms-div th .sort-icon-place {
+ width: 100%;
+ height: 12px;
+
+}
+
+.upcoming-srms-div th[rel="sortable"] {
+ cursor: pointer;
+}
+
+.upcoming-srms-div th .sort.asc {
+ background: #f5f5f5 url("../i/sort-arrows.png") no-repeat center -94px;
+}
+
+.upcoming-srms-div th .sort.desc {
+ background: #f5f5f5 url("../i/sort-arrows.png") no-repeat center 6px;
+}
+
.upcoming-srms-div table > tbody> tr > td {
padding-top: 20px;
padding-bottom: 20px;
diff --git a/src/js/app/challenge-details/index.html b/src/js/app/challenge-details/index.html
index f03b20a0..caac7087 100644
--- a/src/js/app/challenge-details/index.html
+++ b/src/js/app/challenge-details/index.html
@@ -381,14 +381,14 @@
Challenge Links:
Scorecard
Review
+ href="{{CD.reviewScorecardLink}}" target="_blank">Review
Scorecard
-
+
-
Recognition Award
+
Peer Review Award
diff --git a/src/js/app/my-dashboard/js/controllers/my-challenges-controller.js b/src/js/app/my-dashboard/js/controllers/my-challenges-controller.js
index bdbef178..05120d16 100644
--- a/src/js/app/my-dashboard/js/controllers/my-challenges-controller.js
+++ b/src/js/app/my-dashboard/js/controllers/my-challenges-controller.js
@@ -1,6 +1,7 @@
/**
* Copyright (C) 2014 TopCoder Inc., All Rights Reserved.
* @author mdesiderio
+ * @author vikas.agarwal@appirio.com
* @version 1.0
*
* Controller for the my challenges widget
@@ -30,8 +31,12 @@
function MyChallengesCtrl($scope, AuthService, ChallengeService) {
var vm = this;
vm.loading = true;
+ vm.myChallenges = [];
+ vm.visibleChallenges = [];
vm.pageIndex = 1;
vm.pageSize = 5;
+ vm.sortColumn = 'submissionEndDate';
+ vm.sortOrder = 'asc';
vm.totalPages = 1;
vm.totalRecords = vm.totalPages * vm.pageSize;
vm.firstRecordIndex = (vm.pageIndex - 1) * vm.pageSize + 1;
@@ -42,49 +47,115 @@
vm.changePage = changePage;
vm.isCurrentPage = isCurrentPage;
vm.getCurrentPageClass = getCurrentPageClass;
+ vm.sort = sort;
// activate controller
if (AuthService.isLoggedIn === true) {
- activate();
+ getChallenges();
} else {
return false;
}
- function activate() {
+ /**
+ * getChallenges Fetches user's active challenges from the API
+ *
+ * @return {Object} promise of API call
+ */
+ function getChallenges() {
initPaging();
- var searchRequest = {pageIndex: vm.pageIndex, pageSize: vm.pageSize};
+ var searchRequest = {
+ pageIndex: vm.pageIndex,
+ pageSize: vm.pageSize,
+ sortColumn: vm.sortColumn,
+ sortOrder: vm.sortOrder
+ };
// show loading icon
vm.loading = true;
+ // remove following if block when API supports paging
+ if (vm.pageIndex > 1) {
+ processChallengesResponse(vm.myChallenges);
+ vm.loading = false;
+ return;
+ }
// Fetch my active
return ChallengeService.getMyActiveChallenges(searchRequest)
.then(function(data) {
- if (data.pagination) {
- vm.totalPages = Math.ceil(data.pagination.total / vm.pageSize);
- vm.totalRecords = data.pagination.total;
- vm.firstRecordIndex = (vm.pageIndex - 1) * vm.pageSize + 1;
- vm.lastRecordIndex = vm.pageIndex * vm.pageSize;
- vm.lastRecordIndex = vm.lastRecordIndex > vm.totalRecords ? vm.totalRecords : vm.lastRecordIndex;
- }
- vm.myChallenges = data;
+ processChallengesResponse(data);
// stop loading icon
vm.loading = false;
});
}
+ function processChallengesResponse(data) {
+ if (data.pagination) {
+ vm.totalPages = Math.ceil(data.pagination.total / vm.pageSize);
+ vm.totalRecords = data.pagination.total;
+ vm.firstRecordIndex = (vm.pageIndex - 1) * vm.pageSize + 1;
+ vm.lastRecordIndex = vm.pageIndex * vm.pageSize;
+ vm.lastRecordIndex = vm.lastRecordIndex > vm.totalRecords ? vm.totalRecords : vm.lastRecordIndex;
+ }
+ vm.myChallenges = data;
+ // uncomment following line when API supports paging
+ // vm.visibleChallenges = data;
+ // remove following line when API supports paging
+ vm.visibleChallenges = data.slice(vm.firstRecordIndex - 1, vm.lastRecordIndex);
+ }
+
+ /**
+ * changePage changes page in the result set
+ *
+ * @param {JSON} pageLink page link object
+ *
+ * @return {Object} promise of API call with updated pageIndex
+ */
function changePage(pageLink) {
vm.pageIndex = pageLink.val;
- activate();
+ getChallenges();
}
+ /**
+ * isCurrentPage checks if the give page link is the current page
+ *
+ * @param {JSON} pageLink page link object
+ *
+ * @return {Boolean} true if the given page is the current page, false otherwise
+ */
function isCurrentPage (pageLink) {
return pageLink.val === vm.pageIndex;
}
+ /**
+ * getCurrentPageClass Identifies the css class to be used for the given page link
+ *
+ * @param {JSON} pageLink page link object
+ *
+ * @return {String}
+ */
function getCurrentPageClass(pageLink) {
return isCurrentPage(pageLink) ? 'current-page' : '';
}
+ /**
+ * sort sorts the results based on the given column
+ *
+ * @param {String} column page link object
+ *
+ * @return {Object} promise of API call with updated sort params
+ */
+ function sort(column) {
+ if (vm.sortColumn === column) {
+ vm.sortOrder = vm.sortOrder === 'desc' ? 'asc' : 'desc';
+ } else {
+ vm.sortOrder = 'desc';
+ }
+ vm.sortColumn = column;
+ activate();
+ }
+
+ /**
+ * initPaging Initializes the paging
+ */
function initPaging() {
vm.pageLinks = [
{text: "Prev", val: vm.pageIndex - 1},
diff --git a/src/js/app/my-dashboard/js/controllers/upcoming-srms-controller.js b/src/js/app/my-dashboard/js/controllers/upcoming-srms-controller.js
index a0d4ec17..07becbce 100644
--- a/src/js/app/my-dashboard/js/controllers/upcoming-srms-controller.js
+++ b/src/js/app/my-dashboard/js/controllers/upcoming-srms-controller.js
@@ -1,6 +1,7 @@
/**
* Copyright (C) 2014 TopCoder Inc., All Rights Reserved.
* @author mdesiderio
+ * @author vikas.agarwal@appirio.com
* @version 1.0
*
* Controller for the upcoming srms widget
@@ -33,6 +34,8 @@
vm.loading = true;
vm.pageIndex = 1;
vm.pageSize = 5;
+ vm.sortColumn = 'registrationStartTime';
+ vm.sortOrder = 'asc';
vm.totalPages = 1;
vm.totalRecords = vm.totalPages * vm.pageSize;
vm.firstRecordIndex = (vm.pageIndex - 1) * vm.pageSize + 1;
@@ -43,17 +46,28 @@
vm.changePage = changePage;
vm.isCurrentPage = isCurrentPage;
vm.getCurrentPageClass = getCurrentPageClass;
+ vm.sort = sort;
// activate controller
if (AuthService.isLoggedIn === true) {
- activate();
+ getSRMs();
} else {
return false;
}
- function activate() {
+ /**
+ * getSRMs Fetches upcoming SRMs from the API
+ *
+ * @return {Object} promise of API call
+ */
+ function getSRMs() {
initPaging();
- var searchRequest = {pageIndex: vm.pageIndex, pageSize: vm.pageSize};
+ var searchRequest = {
+ pageIndex: vm.pageIndex,
+ pageSize: vm.pageSize,
+ sortColumn: vm.sortColumn,
+ sortOrder: vm.sortOrder
+ };
// start loading
vm.loading = true;
// Fetch the future srms scheduled
@@ -71,20 +85,60 @@
});
}
+ /**
+ * changePage changes page in the result set
+ *
+ * @param {JSON} pageLink page link object
+ *
+ * @return {Object} promise of API call with updated pageIndex
+ */
function changePage(pageLink) {
- console.log(vm.pageIndex);
vm.pageIndex = pageLink.val;
- activate();
+ getSRMs();
}
+ /**
+ * isCurrentPage checks if the give page link is the current page
+ *
+ * @param {JSON} pageLink page link object
+ *
+ * @return {Boolean} true if the given page is the current page, false otherwise
+ */
function isCurrentPage (pageLink) {
return pageLink.val === vm.pageIndex;
}
+ /**
+ * getCurrentPageClass Identifies the css class to be used for the given page link
+ *
+ * @param {JSON} pageLink page link object
+ *
+ * @return {String}
+ */
function getCurrentPageClass(pageLink) {
return isCurrentPage(pageLink) ? 'current-page' : '';
}
+ /**
+ * sort sorts the results based on the given column
+ *
+ * @param {String} column page link object
+ *
+ * @return {Object} promise of API call with updated sort params
+ */
+ function sort(column) {
+ if (vm.sortColumn === column) {
+ vm.sortOrder = vm.sortOrder === 'desc' ? 'asc' : 'desc';
+ } else {
+ vm.sortOrder = 'desc';
+ }
+ vm.sortColumn = column;
+ getSRMs();
+ }
+
+ /**
+ * initPaging Initializes the paging
+ */
function initPaging() {
vm.prevPageLink = {text: "Prev", val: vm.pageIndex - 1};
vm.nextPageLink = {text: "Next", val: vm.pageIndex + 1};
diff --git a/src/js/app/my-dashboard/js/services/challenge-services.js b/src/js/app/my-dashboard/js/services/challenge-services.js
index d4517138..3ea738bd 100644
--- a/src/js/app/my-dashboard/js/services/challenge-services.js
+++ b/src/js/app/my-dashboard/js/services/challenge-services.js
@@ -49,6 +49,8 @@
// add default paging
var pageIndex = request && request.pageIndex ? request.pageIndex : 1;
var pageSize = request && request.pageSize ? request.pageSize : 10;
+ var sortColumn = request && request.sortColumn ? request.sortColumn : 'submissionEndDate';
+ var sortOrder = request && request.sortOrder ? request.sortOrder : 'asc';
service.request = request;
@@ -56,7 +58,9 @@
service.one("user").getList("challenges", {
type: "active",
pageIndex: pageIndex,
- pageSize: pageSize
+ pageSize: pageSize,
+ sortColumn: sortColumn,
+ sortOrder: sortOrder
}).then(function(data) {
// Sets the data, and returns it to all pending promises
service.myActiveChallenges = data;
@@ -71,11 +75,11 @@
}
function uniqueRequest(prevRequest, currRequest) {
- console.log(prevRequest);
- console.log(currRequest);
if (!prevRequest || !currRequest) return true;
return prevRequest.pageIndex != currRequest.pageIndex ||
- prevRequest.pageSize != currRequest.pageSize;
+ prevRequest.pageSize != currRequest.pageSize ||
+ prevRequest.sortColumn != currRequest.sortColumn ||
+ prevRequest.sortOrder != currRequest.sortOrder;
}
return service;
diff --git a/src/js/app/my-dashboard/js/services/member-cert-services.js b/src/js/app/my-dashboard/js/services/member-cert-services.js
index a4902fd4..247cf441 100644
--- a/src/js/app/my-dashboard/js/services/member-cert-services.js
+++ b/src/js/app/my-dashboard/js/services/member-cert-services.js
@@ -29,7 +29,7 @@
* @returns promise
*/
service.getMemberRegistration = function(userId, programId) {
- return service.one("member-cert/registrations", userId).one("programs", programId).get();
+ return service.one("memberCert/registrations", userId).one("programs", programId).get();
}
/**
@@ -39,7 +39,7 @@
* @returns promise
*/
service.registerMember = function(userId, programId) {
- return service.one("member-cert/registrations", userId).one("programs", programId).post();
+ return service.one("memberCert/registrations", userId).one("programs", programId).post();
}
return service;
diff --git a/src/js/app/my-dashboard/js/services/srm-services.js b/src/js/app/my-dashboard/js/services/srm-services.js
index ff062ca1..1412fc76 100644
--- a/src/js/app/my-dashboard/js/services/srm-services.js
+++ b/src/js/app/my-dashboard/js/services/srm-services.js
@@ -33,12 +33,14 @@
// add default paging
var pageIndex = request && request.pageIndex ? request.pageIndex : 1;
var pageSize = request && request.pageSize ? request.pageSize : 10;
+ var sortColumn = request && request.sortColumn ? request.sortColumn : 'registrationStartTime';
+ var sortOrder = request && request.sortOrder ? request.sortOrder : 'asc';
service.request = request;
var filters = {
- sortColumn: "registrationstarttime",
- sortOrder: "asc",
+ sortColumn: sortColumn,
+ sortOrder: sortOrder,
registrationStartTimeAfter: $filter('date')(new Date(), 'yyyy-MM-ddTHH:mm:ss.sssZ'),
statuses: "A,P,F",
pageIndex: pageIndex,
diff --git a/src/js/app/my-dashboard/partials/member-program.html b/src/js/app/my-dashboard/partials/member-program.html
index 8caea53b..9b28e474 100644
--- a/src/js/app/my-dashboard/partials/member-program.html
+++ b/src/js/app/my-dashboard/partials/member-program.html
@@ -27,16 +27,12 @@
-->
-
-
-
Get Ready
+
Participant Badge
@@ -47,7 +43,7 @@
Swift Recognition
-
-
Step One
+
Education Badge
@@ -58,7 +54,7 @@
Swift Recognition
-
-
Getting Ready
+
Peer Badge
@@ -69,7 +65,7 @@
Swift Recognition
-
-
On Starting Line
+
Challenge Badge
@@ -80,18 +76,7 @@
Swift Recognition
-
-
-
-
-
-
-
-
-
Get Certified
+
High Performer Badge
diff --git a/src/js/app/my-dashboard/partials/my-challenges.html b/src/js/app/my-dashboard/partials/my-challenges.html
index 113654a7..0d3ea83e 100644
--- a/src/js/app/my-dashboard/partials/my-challenges.html
+++ b/src/js/app/my-dashboard/partials/my-challenges.html
@@ -18,16 +18,34 @@
- | Type |
- First Prize |
- Challenge |
- Ist Prize |
- Roles |
- Submit By |
+
+ Type
+
+ |
+
+ First Prize
+
+ |
+
+ Challenge
+
+ |
+
+ Ist Prize
+
+ |
+
+ Roles
+
+ |
+
+ Submit By
+
+ |
-
+
| {{challenge.firstPlacePrize | currency}} |
@@ -41,7 +59,7 @@
|
|
-
+
| You don't have any active challenges |
diff --git a/src/js/app/my-dashboard/partials/upcaming-srms.html b/src/js/app/my-dashboard/partials/upcaming-srms.html
index 4d6b5299..b2958503 100644
--- a/src/js/app/my-dashboard/partials/upcaming-srms.html
+++ b/src/js/app/my-dashboard/partials/upcaming-srms.html
@@ -17,9 +17,18 @@
- | Name |
- Registration |
- Coding |
+
+ Name
+
+ |
+
+ Registration
+
+ |
+
+ Coding
+
+ |