From 20d14a336383b9be02e44eb62b93c48b625d3622 Mon Sep 17 00:00:00 2001 From: Colin Hunt Date: Sun, 19 Feb 2017 19:22:06 +0700 Subject: [PATCH] TC App Issue 1002: Preparing for role-dependent customization of the challenge details page --- .../challenge-details-controller.js | 37 ++++++++++++++++--- .../js/services/challenge-details-services.js | 4 ++ 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/js/app/challenge-details/js/controllers/challenge-details-controller.js b/src/js/app/challenge-details/js/controllers/challenge-details-controller.js index b8a63496..617f40f1 100644 --- a/src/js/app/challenge-details/js/controllers/challenge-details-controller.js +++ b/src/js/app/challenge-details/js/controllers/challenge-details-controller.js @@ -47,6 +47,10 @@ challengeType = $location.search().type || 'develop'; var vm = this; + + //Set mockUserRole to array ['value'] to mock a user role, undefined will set userRole value via challenge API + //you can test for a user role using checkRole('role') function for true/false value. + vm.mockUserRole = undefined; // default review style vm.reviewStyle = ""; vm.reviewStyleTooltip = ""; @@ -65,7 +69,7 @@ } vm.activeTab = 'details'; vm.domain = tcconfig.domain; - + if (window.location.hash == '#viewRegistrant' || window.location.hash == '#/viewRegistrant') vm.activeTab = 'registrants'; else if (window.location.hash == '#winner' || window.location.hash == '#/winner') vm.activeTab = 'results'; else if (window.location.hash == '#submissions' || window.location.hash == '#/submissions') vm.activeTab = 'submissions'; @@ -81,6 +85,9 @@ vm.checkpointPassedScreeningSubmissionPercentage = 0; vm.phaseProgram = null; vm.termsList = []; + vm.challengeApiParams = { + filter: 'id=' + challengeId + } $interval(function () { if (vm.challenge && vm.challenge.currentPhaseRemainingTime) { @@ -91,7 +98,7 @@ // Methods vm.registerToChallenge = registerToChallenge; vm.unregisterFromChallenge = unregisterFromChallenge; - + vm.checkRole = checkRole; // functions $scope.round = Math.round; $scope.range = rangeFunction; @@ -131,7 +138,16 @@ initChallengeDetail(handle, vm, ChallengeService); } ); - + /** + * + * @param checkRole + * @returns {true|false} + */ + function checkRole(checkRole) { + return _.some(vm.userRole, function(role) { + return role === checkRole; + }) + } /** * * @param x @@ -166,6 +182,18 @@ ChallengeService.getChallengeTerms(challengeId).then(function(termsList) { vm.termsList = termsList; }); + ChallengeService + .getUserChallenges(vm.handle, vm.challengeApiParams) + .then(function (challenge) { + if (challenge[0] && challenge[0].result.content.length) { + challenge = challenge[0].result.content[0]; + vm.userRole = challenge.userDetails ? challenge.userDetails.roles : []; + } else { + vm.userRole = []; + } + //Set to test value if defined + vm.userRole = vm.mockUserRole ? vm.mockUserRole : vm.userRole; + }); ChallengeService .getChallenge(challengeId) .then(function (challenge) { @@ -176,7 +204,6 @@ }, 100); $('#cdNgMain').show(); }); - } function updateChallengeDetail() { @@ -334,7 +361,7 @@ if (regList.indexOf(handle) == -1) { vm.isRegistered = false; } - + var hasSubmitted = false; if (submitters.indexOf(handle) >= 0) { hasSubmitted = true; diff --git a/src/js/app/challenge-details/js/services/challenge-details-services.js b/src/js/app/challenge-details/js/services/challenge-details-services.js index 3780a9bc..57c93b73 100644 --- a/src/js/app/challenge-details/js/services/challenge-details-services.js +++ b/src/js/app/challenge-details/js/services/challenge-details-services.js @@ -303,6 +303,10 @@ return defer.promise; }; + service.getUserChallenges = function(handle, params) { + return servicev3.one('members', handle.toLowerCase()).all('challenges/').getList(params) + } + return service; }