diff --git a/src/controllers/challenges.js b/src/controllers/challenges.js index 54af61e70a..4e167ce39c 100644 --- a/src/controllers/challenges.js +++ b/src/controllers/challenges.js @@ -19,12 +19,25 @@ var api = module.exports; // GET api.get = function(req, res) { - // TODO only find in user's groups (+ public) - // TODO populate (group, leader, members) - Challenge.find({},function(err, challenges){ - if(err) return res.json(500, {err:err}); - res.json(challenges); - }) + var user = res.locals.user; + Challenge.find({$or:[{leader: user._id}, {members:{$in:[user._id]}}]}) + .populate('members', 'profile.name habits dailys rewards todos') + .exec(function(err, challenges){ + if(err) return res.json(500, {err:err}); + + // slim down the return members' tasks to only the ones in the challenge + _.each(challenges, function(challenge){ + _.each(challenge.members, function(member){ + _.each(['habits', 'dailys', 'todos', 'rewards'], function(type){ + member[type] = _.where(member[type], function(task){ + return task.challenge && task.challenge.id == challenge._id; + }) + }) + }) + }); + + res.json(challenges); + }) } // CREATE diff --git a/views/options/challenges.jade b/views/options/challenges.jade index 41408e98f2..d3710d1166 100644 --- a/views/options/challenges.jade +++ b/views/options/challenges.jade @@ -69,27 +69,5 @@ habitrpg-tasks(obj='challenge', main=false) h3 Statistics div(ng-repeat='member in challenge.members') - h4 {{member.name}} - .grid - .module - app:challenges:stats(header='Habits', challenge='{{challenge}}', member='{{member}}', list='{{challenge.habits}}') - .module - app:challenges:stats(header='Dailies', challenge='{{challenge}}', member='{{member}}', list='{{challenge.dailys}}') - .module - app:challenges:stats(header='Todos', challenge='{{challenge}}', member='{{member}}', list='{{challenge.todos}}') - -//// .stats -// h5 {@header} -// div -// | {#each @list as :task} -// table -// tr -// td -// // -// FIXME commented section below isn't getting updated dynamically, temp solution is less efficient -// strong {:task.text} -// | : {challengeMemberScore(@member,:task)} -// // {round(@member[@taskType]s[:task.id].value)} -// td -// .challenge-{{@challenge.id}}-member-{{@member.id}}-history-{{:task.id}}(style='margin-left: 10px;') -// | {/} + h4 {{member.profile.name}} + habitrpg-tasks(main=false, obj='member') \ No newline at end of file