diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index a0e48f576..000000000 --- a/.eslintignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/* -assets/* -report/* diff --git a/app/community/members.controller.js b/app/community/members.controller.js index 5485d354d..04cb8d794 100644 --- a/app/community/members.controller.js +++ b/app/community/members.controller.js @@ -12,7 +12,7 @@ import angular from 'angular' ctrl.notSearch = true ctrl.showing = 'list' ctrl.domain = CONSTANTS.domain - ctrl.currentMonth = 'January 2016' + ctrl.currentMonth = 'February 2016' ctrl.memberLeaderboard = [] ctrl.copilots = [] CommunityDataService.getMembersData() diff --git a/app/directives/external-account/external-account.spec.js b/app/directives/external-account/external-account.spec.js index 3fa5a5f4d..5caf029a1 100644 --- a/app/directives/external-account/external-account.spec.js +++ b/app/directives/external-account/external-account.spec.js @@ -121,7 +121,7 @@ describe('External Accounts Directive', function() { scope.linkedAccounts = null scope.$digest() expect(element.isolateScope().accountList).to.have.length(7) - expect(_.all(_.pluck(element.isolateScope().accountList, 'status'))).to.be.false + expect(_.every(_.map(element.isolateScope().accountList, 'status'))).to.be.false }) it('should link external account ', function() { diff --git a/app/directives/page-state-header/page-state-header.directive.js b/app/directives/page-state-header/page-state-header.directive.js index 13fbc2f9b..c5f11a4af 100644 --- a/app/directives/page-state-header/page-state-header.directive.js +++ b/app/directives/page-state-header/page-state-header.directive.js @@ -95,7 +95,7 @@ import _ from 'lodash' function displayMoneyEarned(handle) { ProfileService.getUserFinancials(handle) .then(function(financials) { - vm.moneyEarned = _.sum(_.pluck(financials, 'amount')) + vm.moneyEarned = _.sum(_.map(financials, 'amount')) if (!vm.moneyEarned) { $scope.hideMoney = true diff --git a/app/my-challenges/my-challenges.controller.js b/app/my-challenges/my-challenges.controller.js index 80eeaa031..46b226332 100644 --- a/app/my-challenges/my-challenges.controller.js +++ b/app/my-challenges/my-challenges.controller.js @@ -81,7 +81,7 @@ import _ from 'lodash' .then(function(data) { // data should be an array of 2 objects each with it's own array (2D array with metadata) - vm.totalCount = _.sum(_.pluck(data, 'metadata.totalCount')) + vm.totalCount = _.sum(_.map(data, 'metadata.totalCount')) vm.myChallenges = vm.myChallenges.concat(_.union(data[0], data[1])) if (vm.totalCount === 0) { _checkForParticipation().then(function() { diff --git a/app/profile/subtrack/subtrack.controller.js b/app/profile/subtrack/subtrack.controller.js index 69726e472..62418c5bd 100644 --- a/app/profile/subtrack/subtrack.controller.js +++ b/app/profile/subtrack/subtrack.controller.js @@ -85,7 +85,7 @@ import _ from 'lodash' var mustHaveMetrics = ['rank', 'rating', 'reliability'] // check if rating, rank & reliability are all set var _filteredObjs = _.filter(vm.subTrackStats, function(k) { return _.indexOf(mustHaveMetrics, k.label) > -1}) - if (_.all(_.pluck(_filteredObjs, 'val'), function(v) { return !v})) { + if (_.every(_.map(_filteredObjs, 'val'), function(v) { return !v})) { // all false filter em out _.remove(vm.subTrackStats, function(k) { return _.indexOf(mustHaveMetrics, k.label) > -1}) } diff --git a/app/services/communityData.service.js b/app/services/communityData.service.js index 7079b72e1..91f2861a0 100644 --- a/app/services/communityData.service.js +++ b/app/services/communityData.service.js @@ -21,29 +21,29 @@ import angular from 'angular' var data = { 'memberLeaderboard': [ { - 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/f0rc0d3r_jan2016.png', - 'name': 'f0rc0d3r', + 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/tewibowo_feb2016.png', + 'name': 'Tewibowo', 'contestType': 'Design', - 'description': 'Three first place wins in design totalling $4500', + 'description': 'Won $4,175 in 6 challenges', 'class': 'design' }, { - 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/vvvpig_jan2016.png', - 'name': 'vvvpig', + 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/billsedison_feb2016.png', + 'name': 'billsedison', 'contestType': 'Development', - 'description': 'Eight first place wins in design totalling $9300', + 'description': 'Four wins for $4,500', 'class': 'develop' }, { - 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/grumpy_gordon_jan2016.png', - 'name': 'grumpy_gordon', + 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/anubhav94_feb2016.png', + 'name': 'anubhav94', 'contestType': 'Data Science', - 'description': 'Rating increase of 316 pts in Nov SRMs, vaulting into Div 1', + 'description': 'Gained 336 rating points within all 3 December SRMs', 'class': 'data-science' }, { - 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/thomaskranitsas_jan2016.png', - 'name': 'thomaskranitsas', - 'contestType': 'Development Rookie', - 'description': 'Won first place in his first two challenges!', - 'class': 'develop' + 'avatar': '//www.topcoder.com/wp-content/uploads/2015/05/johnalok_feb2016.png', + 'name': 'johnalok', + 'contestType': 'Design Rookie', + 'description': 'Won first place within 2 weeks of joining!', + 'class': 'design' } ], 'copilots': [{ diff --git a/app/services/externalAccounts.service.spec.js b/app/services/externalAccounts.service.spec.js index ad6136125..662a7116d 100644 --- a/app/services/externalAccounts.service.spec.js +++ b/app/services/externalAccounts.service.spec.js @@ -12,7 +12,6 @@ describe('ExternalAccount Service', function() { var auth0, userService var profileGet, profilePost, profileDelete - beforeEach(function() { bard.appModule('topcoder') bard.inject(this, 'ExternalAccountService', '$httpBackend', '$q', 'CONSTANTS', 'JwtInterceptorService', 'auth', 'UserService') @@ -91,8 +90,8 @@ describe('ExternalAccount Service', function() { // spy service.getAllExternalLinks('test1', 111, false).then(function(data) { expect(data).to.be.defined - expect(_.pluck(data, 'provider')).to.include.members(['dribbble', 'github','bitbucket', 'stackoverflow']) - expect(_.all(_.pluck(data, 'data'))).to.be.truthy + expect(_.map(data, 'provider')).to.include.members(['dribbble', 'github','bitbucket', 'stackoverflow']) + expect(_.every(_.map(data, 'data'))).to.be.truthy }) $httpBackend.flush() }) @@ -101,7 +100,7 @@ describe('ExternalAccount Service', function() { // spy service.getAllExternalLinks('test1', 111, true).then(function(data) { expect(data).to.be.defined - expect(_.pluck(data, 'provider')).to.include.members(['dribbble', 'github', 'behance', 'bitbucket','stackoverflow']) + expect(_.map(data, 'provider')).to.include.members(['dribbble', 'github', 'behance', 'bitbucket','stackoverflow']) expect(data).to.have.length(5) var nullAccounts = _.remove(data, function(n) {return n.data.status === 'PENDING'}) expect(nullAccounts).to.have.length(1) @@ -116,8 +115,8 @@ describe('ExternalAccount Service', function() { // spy service.getAllExternalLinks('test1', 111, true).then(function(data) { expect(data).to.be.defined - expect(_.pluck(data, 'provider')).to.include.members(['dribbble', 'github','bitbucket', 'stackoverflow']) - expect(_.all(_.pluck(data, 'data'))).to.be.truthy + expect(_.map(data, 'provider')).to.include.members(['dribbble', 'github','bitbucket', 'stackoverflow']) + expect(_.every(_.map(data, 'data'))).to.be.truthy }) $httpBackend.flush() }) diff --git a/app/services/externalLinks.service.js b/app/services/externalLinks.service.js index d8d47ab64..4191ca9ce 100644 --- a/app/services/externalLinks.service.js +++ b/app/services/externalLinks.service.js @@ -34,12 +34,12 @@ import _ from 'lodash' }) } // add provider type as weblink - links = _(links).forEach(function(l) { - l.provider = 'weblink' - if (l.synchronizedAt === 0) { - l.status = 'PENDING' + links.forEach(function(l, i, array) { + array[i].provider = 'weblink' + if (array[i].synchronizedAt === 0) { + array[i].status = 'PENDING' } - }).value() + }) return links }) } diff --git a/app/services/introduction.service.js b/app/services/introduction.service.js index 8e6f41a71..6867e7b8d 100644 --- a/app/services/introduction.service.js +++ b/app/services/introduction.service.js @@ -41,21 +41,21 @@ import _ from 'lodash' var handleInParams = $stateParams.userHandle ? $stateParams.userHandle.toLowerCase() : null var userIntroJSStats = store.get(userId) - if (!userIntroJSStats.dashboardIntroComplete && _.contains(currentPage, 'dashboard')) { + if (!userIntroJSStats.dashboardIntroComplete && _.includes(currentPage, 'dashboard')) { userIntroJSStats.dashboardIntroComplete = true store.set(userId, userIntroJSStats) return getIntroData(currentPage) } - if (!userIntroJSStats.profileAboutIntroComplete && _.contains(currentPage, 'profile.about') && userHandle === handleInParams) { + if (!userIntroJSStats.profileAboutIntroComplete && _.includes(currentPage, 'profile.about') && userHandle === handleInParams) { userIntroJSStats.profileAboutIntroComplete = true store.set(userId, userIntroJSStats) return getIntroData(currentPage) } - if (!userIntroJSStats.profileSubtrackIntroComplete && _.contains(currentPage, 'profile.subtrack') && userHandle === handleInParams && $stateParams.subTrack.toLowerCase() !== 'copilot') { + if (!userIntroJSStats.profileSubtrackIntroComplete && _.includes(currentPage, 'profile.subtrack') && userHandle === handleInParams && $stateParams.subTrack.toLowerCase() !== 'copilot') { userIntroJSStats.profileSubtrackIntroComplete = true store.set(userId, userIntroJSStats) diff --git a/app/services/userStats.service.spec.js b/app/services/userStats.service.spec.js index af2d71b22..2e054a49e 100644 --- a/app/services/userStats.service.spec.js +++ b/app/services/userStats.service.spec.js @@ -29,30 +29,30 @@ describe('User Stats Service', function() { var _data = UserStatsService.getIterableStats('DEVELOP', 'ASSEMBLY_COMPETITION', stats) expect(_data).to.have.length(6) - expect(_.pluck(_data, 'val')).to.have.members(['1,733', '25', '95%', '16', '10', '80%']) - expect(_.pluck(_data, 'label')).to.have.members(['rating', 'rank', 'percentile', 'challenges', 'wins', 'reliability']) + expect(_.map(_data, 'val')).to.have.members(['1,733', '25', '95%', '16', '10', '80%']) + expect(_.map(_data, 'label')).to.have.members(['rating', 'rank', 'percentile', 'challenges', 'wins', 'reliability']) }) it('should return stats for design-webdesign ', function() { var _data = UserStatsService.getIterableStats('DESIGN', 'WEB_DESIGNS', stats) expect(_data).to.have.length(2) - expect(_.pluck(_data, 'val')).to.have.members(['190','418']) - expect(_.pluck(_data, 'label')).to.have.members(['wins', 'challenges']) + expect(_.map(_data, 'val')).to.have.members(['190','418']) + expect(_.map(_data, 'label')).to.have.members(['wins', 'challenges']) }) it('should return stats for data-science: srms ', function() { var _data = UserStatsService.getIterableStats('DATA_SCIENCE', 'SRM', stats) expect(_data).to.have.length(5) - expect(_.pluck(_data, 'label')).to.have.members(['rating', 'rank', 'percentile', 'competitions', 'volatility']) - expect(_.pluck(_data, 'val')).to.have.members(['799', '6,280', '26%', '10', '473']) + expect(_.map(_data, 'label')).to.have.members(['rating', 'rank', 'percentile', 'competitions', 'volatility']) + expect(_.map(_data, 'val')).to.have.members(['799', '6,280', '26%', '10', '473']) }) it('should return stats for Copilot ', function() { var _data = UserStatsService.getIterableStats('COPILOT', 'COPILOT', stats) expect(_data).to.have.length(5) - expect(_.pluck(_data, 'label')).to.have.members(['active challenges', 'active projects', 'total challenges', 'total projects', 'fulfillment']) - expect(_.pluck(_data, 'val')).to.have.members([0, '1', '24', '3', '84%']) + expect(_.map(_data, 'label')).to.have.members(['active challenges', 'active projects', 'total challenges', 'total projects', 'fulfillment']) + expect(_.map(_data, 'val')).to.have.members([0, '1', '24', '3', '84%']) }) }) @@ -322,7 +322,7 @@ describe('User Stats Service', function() { }] var filtered = UserStatsService.filterStats(toTest) expect(filtered).to.exist.to.have.length(3) - expect(_.pluck(filtered, 'showStats')).to.have.members([true, true, true]) + expect(_.map(filtered, 'showStats')).to.have.members([true, true, true]) }) }) diff --git a/app/settings/edit-profile/edit-profile.controller.js b/app/settings/edit-profile/edit-profile.controller.js index 39fd9f7b4..50498c657 100644 --- a/app/settings/edit-profile/edit-profile.controller.js +++ b/app/settings/edit-profile/edit-profile.controller.js @@ -155,9 +155,9 @@ import _ from 'lodash' function processData(userInfo) { vm.tracks = { - DESIGN: _.contains(userInfo.tracks, 'DESIGN'), - DEVELOP: _.contains(userInfo.tracks, 'DEVELOP'), - DATA_SCIENCE: _.contains(userInfo.tracks, 'DATA_SCIENCE') + DESIGN: _.includes(userInfo.tracks, 'DESIGN'), + DEVELOP: _.includes(userInfo.tracks, 'DEVELOP'), + DATA_SCIENCE: _.includes(userInfo.tracks, 'DATA_SCIENCE') } } diff --git a/app/skill-picker/skill-picker.controller.js b/app/skill-picker/skill-picker.controller.js index ad684f8bf..2065c1cd0 100644 --- a/app/skill-picker/skill-picker.controller.js +++ b/app/skill-picker/skill-picker.controller.js @@ -56,7 +56,7 @@ import _ from 'lodash' * Verfies if the communities section state has been modified by the user in any way. */ function isCommunitiesDirty() { - var community = _.findWhere(vm.communities, {dirty: true}) + var community = _.find(vm.communities, {dirty: true}) return !!community } @@ -97,7 +97,7 @@ import _ from 'lodash' vm.loadingCommunities = false responses.forEach(function(program) { if (program) { - var community = _.findWhere(vm.communities, {programId: program.eventId}) + var community = _.find(vm.communities, {programId: program.eventId}) if (community) { // set display false to avoid showing already enabled/registered program // we expect display property to be modified after first load of the page @@ -111,7 +111,7 @@ import _ from 'lodash' } }) // if there exists at least 1 community which can be displayed, set showCommunity flag to true - var community = _.findWhere(vm.communities, {display: true}) + var community = _.find(vm.communities, {display: true}) if (community) { vm.showCommunity = true } diff --git a/assets/css/layout/header.scss b/assets/css/layout/header.scss index a17844eec..589e720af 100644 --- a/assets/css/layout/header.scss +++ b/assets/css/layout/header.scss @@ -75,20 +75,6 @@ background-size: contain; background-repeat: no-repeat; } - - .logo-link:after { - content: 'beta'; - display: inline-block; - width: 37px; - height: 18px; - margin-top: 21px; - margin-left: 160px; - padding: 0 1px; - line-height: 19px; - font-size: 10px; - background-color: $gray-lighter; - border-radius: 15px; - } } .user-link { @@ -315,11 +301,6 @@ .top-header { padding: 0 20px 20px; - - .logo-link:after { - margin-top: 21px; - margin-left: -3px; - } } .menu-item { diff --git a/assets/css/submissions/submissions.scss b/assets/css/submissions/submissions.scss index e60c2898b..05858aab2 100644 --- a/assets/css/submissions/submissions.scss +++ b/assets/css/submissions/submissions.scss @@ -50,3 +50,7 @@ margin-left: auto; margin-right: auto; } + +.icon-arrow { + background-image: url(../../images/ico-arrow-big-left.svg); +} \ No newline at end of file diff --git a/assets/images/logo_mobile.svg b/assets/images/logo_mobile.svg old mode 100755 new mode 100644 index befa38193..3fa9d3aa6 --- a/assets/images/logo_mobile.svg +++ b/assets/images/logo_mobile.svg @@ -1,66 +1,14 @@ - - - logo topcoder mobile - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + diff --git a/assets/images/logo_topcoder.svg b/assets/images/logo_topcoder.svg old mode 100755 new mode 100644 index d1e433a4d..526eb7f31 --- a/assets/images/logo_topcoder.svg +++ b/assets/images/logo_topcoder.svg @@ -1,78 +1,28 @@ - - - logo topcoder - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/package.json b/package.json index 1490e5feb..9eef08945 100644 --- a/package.json +++ b/package.json @@ -60,12 +60,12 @@ "font-awesome": "^4.5.0", "intro.js": "^1.1.1", "jstimezonedetect": "^1.0.6", - "lodash": "^3.10.1", + "lodash": "^4.5.0", "moment": "^2.11.1", "moment-timezone": "^0.5.0", "ng-dialog": "^0.5.6", "react-select": "1.0.0-beta8", - "restangular": "^1.5.1", + "restangular": "^1.5.2", "tc-angular-ellipsis": "^0.1.6", "xml2js": "^0.4.16", "zepto": "^1.0.1" diff --git a/webpack.config.js b/webpack.config.js index ebc65ca46..9aab80154 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,10 +1,12 @@ require('./node_modules/coffee-script/register') -if (process.env.TRAVIS_BRANCH == 'master') process.env.ENV = 'PROD' -if (process.env.TRAVIS_BRANCH == 'qa-integration') process.env.ENV = 'QA' -if (process.env.TRAVIS_BRANCH == 'dev') process.env.ENV = 'DEV' +const CI = process.env.TRAVIS_BRANCH -var config = require('appirio-tech-webpack-config')({ +if (CI == 'master') process.env.ENV = 'PROD' +if (CI == 'qa-integration') process.env.ENV = 'QA' +if (CI == 'dev') process.env.ENV = 'DEV' + +const config = require('appirio-tech-webpack-config')({ dirname: __dirname, entry: { app: './app/index' @@ -16,6 +18,6 @@ var config = require('appirio-tech-webpack-config')({ } }) -if (process.env.TRAVIS_BRANCH) config.output.publicPath = process.env.ASSET_PREFIX +if (CI) config.output.publicPath = process.env.ASSET_PREFIX module.exports = config