challenge prize: add to challenge creation form (including min/max validation)

This commit is contained in:
Tyler Renelle
2013-10-31 11:44:50 -07:00
parent 6c63608f83
commit 13fa947c57
5 changed files with 20 additions and 6 deletions

View File

@@ -28,6 +28,12 @@ habitrpg.controller("ChallengesCtrl", ['$scope', 'User', 'Challenges', 'Notifica
(typeof $scope.search._isMember == 'undefined' || $scope.search._isMember == chal._isMember)); (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);
})
//------------------------------------------------------------ //------------------------------------------------------------
// Challenge // Challenge

View File

@@ -71,7 +71,7 @@ api.list = function(req, res) {
{group: 'habitrpg'} {group: 'habitrpg'}
] ]
}) })
.select('name description group members') .select('name description group members prize')
.populate('group', '_id name') .populate('group', '_id name')
.exec(function(err, challenges){ .exec(function(err, challenges){
if (err) return res.json(500,{err:err}); if (err) return res.json(500,{err:err});

View File

@@ -34,7 +34,7 @@ api.getMember = function(req, res) {
*/ */
api.list = function(req, res) { api.list = function(req, res) {
var user = res.locals.user; var user = res.locals.user;
var groupFields = 'name description memberCount'; var groupFields = 'name description memberCount balance leader';
var sort = '-memberCount'; var sort = '-memberCount';
var type = req.query.type || 'party,guilds,public,tavern'; var type = req.query.type || 'party,guilds,public,tavern';

View File

@@ -17,7 +17,8 @@ var ChallengeSchema = new Schema({
group: {type: String, ref: 'Group'}, group: {type: String, ref: 'Group'},
timestamp: {type: Date, 'default': Date.now}, timestamp: {type: Date, 'default': Date.now},
members: [{type: String, ref: 'User'}], members: [{type: String, ref: 'User'}],
memberCount: {type: Number, 'default': 0} memberCount: {type: Number, 'default': 0},
prize: {type: Number, 'default': 0}
}); });
ChallengeSchema.virtual('tasks').get(function () { ChallengeSchema.virtual('tasks').get(function () {

View File

@@ -41,9 +41,8 @@ script(type='text/ng-template', id='partials/options.challenges.html')
| Either | Either
.span10 .span10
// Creation form // Creation form
div(ng-hide='newChallenge') button.btn.btn-success(ng-click='create()', ng-hide='newChallenge') Create Challenge
button.btn.btn-success(ng-click='create()') Create Challenge .create-challenge-from.well(ng-if='newChallenge')
.create-challenge-from(ng-if='newChallenge')
form(ng-submit='save(newChallenge)') form(ng-submit='save(newChallenge)')
div div
input.btn.btn-success(type='submit', value='Save') input.btn.btn-success(type='submit', value='Save')
@@ -51,8 +50,16 @@ script(type='text/ng-template', id='partials/options.challenges.html')
select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups') select(ng-model='newChallenge.group', ng-required='required', name='Group', ng-options='g._id as g.name for g in groups')
.challenge-options .challenge-options
input.option-content(type='text', ng-model='newChallenge.name', placeholder='Challenge Title', required='required') input.option-content(type='text', ng-model='newChallenge.name', placeholder='Challenge Title', required='required')
.challenge-options
textarea.option-content(cols='3', placeholder='Description', ng-model='newChallenge.description') textarea.option-content(cols='3', placeholder='Description', ng-model='newChallenge.description')
.challenge-options
.option-group.option-medium
input.option-content(type='number', min="0", max="{{maxPrize}}", ng-model='newChallenge.prize', placeholder='Prize')
span.input-suffix.Pet_Currency_Gem1x.inline-gems
i.icon-question-sign(popover="If someone can 'win' your challenge, you can optionally award that winner a Gem prize. Min = 0, Max = the number of gems you own. If you created the guild for this challenge, Max += Guild.balance", popover-trigger='mouseenter', popover-placement='right')
habitrpg-tasks(main=false, obj='newChallenge') habitrpg-tasks(main=false, obj='newChallenge')
// Challenges list // Challenges list