diff --git a/public/js/controllers/challengesCtrl.js b/public/js/controllers/challengesCtrl.js index 87f7b9cf7a..0a0432659f 100644 --- a/public/js/controllers/challengesCtrl.js +++ b/public/js/controllers/challengesCtrl.js @@ -1,7 +1,7 @@ "use strict"; -habitrpg.controller("ChallengesCtrl", ['$scope', 'User', 'Challenges', 'Notification', '$compile', 'Groups', '$state', 'API_URL', '$http', - function($scope, User, Challenges, Notification, $compile, Groups, $state, API_URL, $http) { +habitrpg.controller("ChallengesCtrl", ['$scope', 'User', 'Challenges', 'Notification', '$compile', 'Groups', '$state', '$rootScope', + function($scope, User, Challenges, Notification, $compile, Groups, $state, $rootScope) { // FIXME get this from cache Groups.Group.query({type:'party,guilds,tavern'}, function(groups){ @@ -85,16 +85,47 @@ habitrpg.controller("ChallengesCtrl", ['$scope', 'User', 'Challenges', 'Notifica /** - * Delete + * Close Challenge + * ------------------ */ - $scope["delete"] = function(challenge, $index) { - if (confirm("Delete challenge, are you sure?") !== true) return; + function backToChallenges(){ + $scope.popoverEl.popover('destroy'); + $state.go('options.challenges'); + $scope.challenges = Challenges.Challenge.query(); + User.log({}); + } + $scope.cancelClosing = function() { + $scope.popoverEl.popover('destroy'); + $scope.popoverEl = undefined; + $scope.closingChal = undefined; + } + $scope["delete"] = function(challenge) { + if (!confirm("Delete challenge, are you sure?")) return; challenge.$delete(function(){ - $state.go('options.challenges'); - $scope.challenges = Challenges.Challenge.query(); - User.log({}); + $scope.popoverEl.popover('destroy'); + backToChallenges(); }); }; + $scope.selectWinner = function(challenge) { + if (!confirm("Are you sure?")) return; + challenge.$selectWinner({uid:challenge.winner}, function(){ + $scope.popoverEl.popover('destroy'); + backToChallenges(); + }) + } + $scope.close = function(challenge, $event) { + $scope.closingChal = challenge; + $scope.popoverEl = $($event.target); + var html = $compile('
')($scope); + $scope.popoverEl.popover('destroy').popover({ + html: true, + placement: 'right', + trigger: 'manual', + title: 'Close challenge and...', + content: html + }).popover('show'); + + } //------------------------------------------------------------ // Tasks diff --git a/views/options/challenges.jade b/views/options/challenges.jade index 5642043114..5bf9424bad 100644 --- a/views/options/challenges.jade +++ b/views/options/challenges.jade @@ -1,12 +1,20 @@ +script(type='text/ng-template', id='partials/options.challenges.detail.close.html') + a.btn.btn-small.btn-danger(ng-click="delete(closingChal)") Delete + h5 - Or - + small Select a winner and close the challenge: + select(ng-model='challenge.winner', name='Winner', ng-options='u._id as u.profile.name for u in closingChal.members', ng-change='selectWinner(closingChal)') + small.pull-right + a(ng-click='cancelClosing(closingChal)') cancel + script(type='text/ng-template', id='partials/options.challenges.detail.html') // Edit button ul.unstyled li(ng-show='challenge.leader==user._id', ng-hide='challenge._locked==false') - button.btn.btn-default(ng-click='challenge._locked = false') Edit + button.btn.btn-small.btn-default(ng-click='challenge._locked = false') Edit li(ng-show='challenge._locked==false') - button.btn.btn-primary(ng-click='save(challenge)') Save - button.btn.btn-danger(ng-click='delete(challenge, $index)') Delete - button.btn.btn-default(ng-click='challenge._locked=true') Cancel + button.btn.btn-small.btn-primary(ng-click='save(challenge)') Save + button.btn.btn-small.btn-default(ng-click='challenge._locked=true') Cancel + button.btn.btn-small.btn-default(ng-click='close(challenge, $event)', tooltip='Delete or select winner') Close div(ng-show='challenge._locked==false') .-options