mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
[#1781] challenges: select-all / select-none buttons
This commit is contained in:
@@ -7,34 +7,13 @@ habitrpg.controller("ChallengesCtrl", ['$scope', 'User', 'Challenges', 'Notifica
|
|||||||
Groups.Group.query({type:'party,guilds,tavern'}, function(groups){
|
Groups.Group.query({type:'party,guilds,tavern'}, function(groups){
|
||||||
$scope.groups = groups;
|
$scope.groups = groups;
|
||||||
$scope.search = {
|
$scope.search = {
|
||||||
group: _.reduce(groups, function(m,g){m[g._id]=true;return m;}, {})
|
group: _.transform(groups, function(m,g){m[g._id]=true;})
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
// FIXME $scope.challenges needs to be resolved first (see app.js)
|
// FIXME $scope.challenges needs to be resolved first (see app.js)
|
||||||
$scope.challenges = Challenges.Challenge.query();
|
$scope.challenges = Challenges.Challenge.query();
|
||||||
// we should fix this, that's pretty brittle
|
// we should fix this, that's pretty brittle
|
||||||
|
|
||||||
// $scope.$watch('search', function(search){
|
|
||||||
// if (!search) $scope.filteredChallenges = $scope.challenges;
|
|
||||||
// $scope.filteredChallenges = $filter('filter')($scope.challenges, function(chal) {
|
|
||||||
// return (search.group[chal.group._id] &&
|
|
||||||
// (typeof search._isMember == 'undefined' || search._isMember == chal._isMember));
|
|
||||||
// })
|
|
||||||
// })
|
|
||||||
// TODO probably better to use $watch above, to avoid this being calculated on every digest cycle
|
|
||||||
$scope.filterChallenges = function(chal){
|
|
||||||
return (!$scope.search) ? true :
|
|
||||||
($scope.search.group[chal.group._id] &&
|
|
||||||
(typeof $scope.search._isMember == 'undefined' || $scope.search._isMember == chal._isMember));
|
|
||||||
}
|
|
||||||
|
|
||||||
$scope.$watch('newChallenge.group', function(gid){
|
|
||||||
if (!gid) return;
|
|
||||||
var group = _.find($scope.groups, {_id:gid});
|
|
||||||
$scope.maxPrize = User.user.balance*4 + ((group && group.balance && group.leader==User.user._id) ? group.balance*4 : 0);
|
|
||||||
if (gid == 'habitrpg') $scope.newChallenge.prize = 1;
|
|
||||||
})
|
|
||||||
|
|
||||||
// override score() for tasks listed in challenges-editing pages, so that nothing happens
|
// override score() for tasks listed in challenges-editing pages, so that nothing happens
|
||||||
$scope.score = function(){}
|
$scope.score = function(){}
|
||||||
|
|
||||||
@@ -216,4 +195,37 @@ habitrpg.controller("ChallengesCtrl", ['$scope', 'User', 'Challenges', 'Notifica
|
|||||||
}).popover('show');
|
}).popover('show');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------
|
||||||
|
// Filtering
|
||||||
|
//------------------------------------------------------------
|
||||||
|
|
||||||
|
// $scope.$watch('search', function(search){
|
||||||
|
// if (!search) $scope.filteredChallenges = $scope.challenges;
|
||||||
|
// $scope.filteredChallenges = $filter('filter')($scope.challenges, function(chal) {
|
||||||
|
// return (search.group[chal.group._id] &&
|
||||||
|
// (typeof search._isMember == 'undefined' || search._isMember == chal._isMember));
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
// TODO probably better to use $watch above, to avoid this being calculated on every digest cycle
|
||||||
|
$scope.filterChallenges = function(chal){
|
||||||
|
return (!$scope.search) ? true :
|
||||||
|
($scope.search.group[chal.group._id] &&
|
||||||
|
(typeof $scope.search._isMember == 'undefined' || $scope.search._isMember == chal._isMember));
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.$watch('newChallenge.group', function(gid){
|
||||||
|
if (!gid) return;
|
||||||
|
var group = _.find($scope.groups, {_id:gid});
|
||||||
|
$scope.maxPrize = User.user.balance*4 + ((group && group.balance && group.leader==User.user._id) ? group.balance*4 : 0);
|
||||||
|
if (gid == 'habitrpg') $scope.newChallenge.prize = 1;
|
||||||
|
})
|
||||||
|
|
||||||
|
$scope.selectAll = function(){
|
||||||
|
$scope.search.group = _.transform($scope.groups, function(m,g){m[g._id] = true});
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.selectNone = function(){
|
||||||
|
$scope.search.group = _.transform($scope.groups, function(m,g){m[g._id] = false});
|
||||||
|
}
|
||||||
|
|
||||||
}]);
|
}]);
|
||||||
@@ -61,6 +61,10 @@ script(type='text/ng-template', id='partials/options.social.challenges.html')
|
|||||||
.span2.well#challenges-filters
|
.span2.well#challenges-filters
|
||||||
h3 Filter:
|
h3 Filter:
|
||||||
h4 Groups
|
h4 Groups
|
||||||
|
ul.unstyled
|
||||||
|
a.btn.btn-mini.pull-left(ng-click='selectAll()') All
|
||||||
|
a.btn.btn-mini(ng-click='selectNone()') None
|
||||||
|
br
|
||||||
label.checkbox(ng-repeat='group in groups')
|
label.checkbox(ng-repeat='group in groups')
|
||||||
input(type='checkbox', ng-model='search.group[group._id]')
|
input(type='checkbox', ng-model='search.group[group._id]')
|
||||||
| {{group.name}}
|
| {{group.name}}
|
||||||
|
|||||||
Reference in New Issue
Block a user