mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-08-01 03:30:25 +00:00
put stuff in viewHelpers file
This commit is contained in:
parent
86dffb87a6
commit
035a705805
5 changed files with 128 additions and 111 deletions
|
|
@ -1,5 +1,5 @@
|
|||
// Generated by CoffeeScript 1.3.3
|
||||
var Scoring, content, derby, get, getHabits, ready, view, _ref;
|
||||
var content, derby, get, getHabits, ready, schema, scoring, view, _ref;
|
||||
|
||||
derby = require('derby');
|
||||
|
||||
|
|
@ -11,65 +11,11 @@ derby.use(require('../../ui'));
|
|||
|
||||
content = require('./content');
|
||||
|
||||
Scoring = require('./scoring');
|
||||
scoring = require('./scoring');
|
||||
|
||||
view.fn('taskClasses', function(type, completed, value) {
|
||||
var classes;
|
||||
classes = type;
|
||||
if (completed) {
|
||||
classes += " completed";
|
||||
}
|
||||
switch (false) {
|
||||
case !(value < -8):
|
||||
classes += ' color-worst';
|
||||
break;
|
||||
case !(value >= -8 && value < -5):
|
||||
classes += ' color-worse';
|
||||
break;
|
||||
case !(value >= -5 && value < -1):
|
||||
classes += ' color-bad';
|
||||
break;
|
||||
case !(value >= -1 && value < 1):
|
||||
classes += ' color-neutral';
|
||||
break;
|
||||
case !(value >= 1 && value < 5):
|
||||
classes += ' color-good';
|
||||
break;
|
||||
case !(value >= 5 && value < 10):
|
||||
classes += ' color-better';
|
||||
break;
|
||||
case !(value >= 10):
|
||||
classes += ' color-best';
|
||||
}
|
||||
return classes;
|
||||
});
|
||||
schema = require('./schema');
|
||||
|
||||
view.fn("percent", function(x, y) {
|
||||
if (x === 0) {
|
||||
x = 1;
|
||||
}
|
||||
return Math.round(x / y * 100);
|
||||
});
|
||||
|
||||
view.fn("round", function(num) {
|
||||
return Math.round(num);
|
||||
});
|
||||
|
||||
view.fn("gold", function(num) {
|
||||
if (num) {
|
||||
return num.toFixed(1).split('.')[0];
|
||||
} else {
|
||||
return "0";
|
||||
}
|
||||
});
|
||||
|
||||
view.fn("silver", function(num) {
|
||||
if (num) {
|
||||
return num.toFixed(1).split('.')[1];
|
||||
} else {
|
||||
return "0";
|
||||
}
|
||||
});
|
||||
require('./viewHelpers')(view);
|
||||
|
||||
get('/:uidParam?', function(page, model, _arg) {
|
||||
var uidParam;
|
||||
|
|
@ -83,7 +29,7 @@ get('/:uidParam?', function(page, model, _arg) {
|
|||
userId = model.get('_userId');
|
||||
user = users.get(userId);
|
||||
if (user == null) {
|
||||
newUser = require('./schema').userSchema;
|
||||
newUser = schema.userSchema;
|
||||
_ref1 = content.defaultTasks;
|
||||
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
||||
task = _ref1[_i];
|
||||
|
|
@ -195,7 +141,7 @@ ready(function(model) {
|
|||
throw new Error("Direction neither 'up' nor 'down' on checkbox set.");
|
||||
};
|
||||
task = model.at("_user.tasks." + i);
|
||||
Scoring.score({
|
||||
scoring.score({
|
||||
user: model.at('_user'),
|
||||
task: task,
|
||||
direction: direction()
|
||||
|
|
@ -336,7 +282,7 @@ ready(function(model) {
|
|||
}
|
||||
user = model.at('_user');
|
||||
task = model.at($(el).parents('li')[0]);
|
||||
return Scoring.score({
|
||||
return scoring.score({
|
||||
user: user,
|
||||
task: task,
|
||||
direction: direction
|
||||
|
|
@ -371,7 +317,7 @@ ready(function(model) {
|
|||
daysPassed: daysPassed,
|
||||
n: n
|
||||
}, "[debug] Cron (" + today + ", " + n + ")");
|
||||
_results.push(Scoring.tally(model));
|
||||
_results.push(scoring.tally(model));
|
||||
}
|
||||
return _results;
|
||||
}
|
||||
|
|
@ -381,10 +327,10 @@ ready(function(model) {
|
|||
return poormanscron();
|
||||
}), 3600000);
|
||||
exports.endOfDayTally = function(e, el) {
|
||||
return Scoring.tally(model);
|
||||
return scoring.tally(model);
|
||||
};
|
||||
exports.updateSchema = function(e, el) {
|
||||
return require('./schema').updateSchema(model);
|
||||
return schema.updateSchema(model);
|
||||
};
|
||||
exports.shortcuts = function(e) {
|
||||
var code, command;
|
||||
|
|
|
|||
57
lib/app/viewHelpers.js
Normal file
57
lib/app/viewHelpers.js
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
// Generated by CoffeeScript 1.3.3
|
||||
|
||||
module.exports = function(view) {
|
||||
view.fn('taskClasses', function(type, completed, value) {
|
||||
var classes;
|
||||
classes = type;
|
||||
if (completed) {
|
||||
classes += " completed";
|
||||
}
|
||||
switch (false) {
|
||||
case !(value < -8):
|
||||
classes += ' color-worst';
|
||||
break;
|
||||
case !(value >= -8 && value < -5):
|
||||
classes += ' color-worse';
|
||||
break;
|
||||
case !(value >= -5 && value < -1):
|
||||
classes += ' color-bad';
|
||||
break;
|
||||
case !(value >= -1 && value < 1):
|
||||
classes += ' color-neutral';
|
||||
break;
|
||||
case !(value >= 1 && value < 5):
|
||||
classes += ' color-good';
|
||||
break;
|
||||
case !(value >= 5 && value < 10):
|
||||
classes += ' color-better';
|
||||
break;
|
||||
case !(value >= 10):
|
||||
classes += ' color-best';
|
||||
}
|
||||
return classes;
|
||||
});
|
||||
view.fn("percent", function(x, y) {
|
||||
if (x === 0) {
|
||||
x = 1;
|
||||
}
|
||||
return Math.round(x / y * 100);
|
||||
});
|
||||
view.fn("round", function(num) {
|
||||
return Math.round(num);
|
||||
});
|
||||
view.fn("gold", function(num) {
|
||||
if (num) {
|
||||
return num.toFixed(1).split('.')[0];
|
||||
} else {
|
||||
return "0";
|
||||
}
|
||||
});
|
||||
return view.fn("silver", function(num) {
|
||||
if (num) {
|
||||
return num.toFixed(1).split('.')[1];
|
||||
} else {
|
||||
return "0";
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
@ -2,45 +2,13 @@ derby = require('derby')
|
|||
{get, view, ready} = derby.createApp module
|
||||
derby.use require('derby-ui-boot')
|
||||
derby.use(require('../../ui'))
|
||||
|
||||
# Custom requires
|
||||
content = require('./content')
|
||||
Scoring = require('./scoring')
|
||||
|
||||
# ========== VIEW HELPERS ==========
|
||||
scoring = require('./scoring')
|
||||
schema = require('./schema')
|
||||
require('./viewHelpers')(view)
|
||||
|
||||
view.fn 'taskClasses', (type, completed, value) ->
|
||||
#TODO figure out how to just pass in the task model, so i can access all these properties from one object
|
||||
classes = type
|
||||
classes += " completed" if completed
|
||||
|
||||
switch
|
||||
when value<-8 then classes += ' color-worst'
|
||||
when value>=-8 and value<-5 then classes += ' color-worse'
|
||||
when value>=-5 and value<-1 then classes += ' color-bad'
|
||||
when value>=-1 and value<1 then classes += ' color-neutral'
|
||||
when value>=1 and value<5 then classes += ' color-good'
|
||||
when value>=5 and value<10 then classes += ' color-better'
|
||||
when value>=10 then classes += ' color-best'
|
||||
return classes
|
||||
|
||||
view.fn "percent", (x, y) ->
|
||||
x=1 if x==0
|
||||
Math.round(x/y*100)
|
||||
|
||||
view.fn "round", (num) ->
|
||||
Math.round num
|
||||
|
||||
view.fn "gold", (num) ->
|
||||
if num
|
||||
return num.toFixed(1).split('.')[0]
|
||||
else
|
||||
return "0"
|
||||
|
||||
view.fn "silver", (num) ->
|
||||
if num
|
||||
num.toFixed(1).split('.')[1]
|
||||
else
|
||||
return "0"
|
||||
|
||||
# ========== ROUTES ==========
|
||||
|
||||
get '/:uidParam?', (page, model, {uidParam}) ->
|
||||
|
|
@ -59,7 +27,7 @@ get '/:uidParam?', (page, model, {uidParam}) ->
|
|||
|
||||
# Else, select a new userId and initialize user
|
||||
unless user?
|
||||
newUser = require('./schema').userSchema
|
||||
newUser = schema.userSchema
|
||||
for task in content.defaultTasks
|
||||
guid = task.id = require('derby/node_modules/racer').uuid()
|
||||
newUser.tasks[guid] = task
|
||||
|
|
@ -159,7 +127,7 @@ ready (model) ->
|
|||
|
||||
# Score the user based on todo task
|
||||
task = model.at("_user.tasks.#{i}")
|
||||
Scoring.score({user:model.at('_user'), task:task, direction:direction()})
|
||||
scoring.score({user:model.at('_user'), task:task, direction:direction()})
|
||||
|
||||
# Then move the todos to/from _todoList/_completedList
|
||||
if task.get('type') == 'todo'
|
||||
|
|
@ -272,7 +240,7 @@ ready (model) ->
|
|||
user = model.at('_user')
|
||||
task = model.at $(el).parents('li')[0]
|
||||
|
||||
Scoring.score({user:user, task:task, direction:direction})
|
||||
scoring.score({user:user, task:task, direction:direction})
|
||||
|
||||
exports.revive = (e, el) ->
|
||||
stats = model.at '_user.stats'
|
||||
|
|
@ -295,7 +263,7 @@ ready (model) ->
|
|||
model.set('_user.lastCron', today) # reset cron
|
||||
for n in [1..daysPassed]
|
||||
console.log {today: today, lastCron: lastCron, daysPassed: daysPassed, n:n}, "[debug] Cron (#{today}, #{n})"
|
||||
Scoring.tally(model)
|
||||
scoring.tally(model)
|
||||
poormanscron() # Run once on refresh
|
||||
setInterval (-> # Then run once every hour
|
||||
poormanscron()
|
||||
|
|
@ -304,11 +272,11 @@ ready (model) ->
|
|||
# ========== DEBUGGING ==========
|
||||
|
||||
exports.endOfDayTally = (e, el) ->
|
||||
Scoring.tally(model)
|
||||
scoring.tally(model)
|
||||
|
||||
# Temporary solution to running updates against the schema when the code changes
|
||||
exports.updateSchema = (e, el) ->
|
||||
require('./schema').updateSchema(model)
|
||||
schema.updateSchema(model)
|
||||
|
||||
# ========== SHORTCUTS ==========
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,19 @@ module.exports.userSchema = userSchema = {
|
|||
}
|
||||
|
||||
module.exports.updateSchema = (model) ->
|
||||
# removed old update code, dangerous to run twice.
|
||||
# I'm placing db-update code in this function while still in dev, then running
|
||||
# once on the server, then removing the code. FIXME figure out something better
|
||||
return
|
||||
# users = model.get('users')
|
||||
# console.log _.size(users), 'users.size before'
|
||||
# for uid,userObj of users
|
||||
# # remove if they don't have a lastCron (older accounts didn't)
|
||||
# unless userObj.lastCron?
|
||||
# model.del "users.#{uid}"
|
||||
#
|
||||
# # remove if they haven't logged in in 30 days
|
||||
# lastCron = new Date( (new Date(userObj.lastCron)).toDateString() ) # calculate as midnight
|
||||
# today = new Date((new Date).toDateString()) # calculate as midnight
|
||||
# DAY = 1000 * 60 * 60 * 24
|
||||
# daysPassed = Math.floor((today.getTime() - lastCron.getTime()) / DAY)
|
||||
# if daysPassed > 30
|
||||
# model.del "users.#{uid}"
|
||||
|
||||
# TODO instead of the above, remove all users who's tasks compare directly to require('./content).defaultTasks
|
||||
|
|
|
|||
34
src/app/viewHelpers.coffee
Normal file
34
src/app/viewHelpers.coffee
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
module.exports = (view) ->
|
||||
view.fn 'taskClasses', (type, completed, value) ->
|
||||
#TODO figure out how to just pass in the task model, so i can access all these properties from one object
|
||||
classes = type
|
||||
classes += " completed" if completed
|
||||
|
||||
switch
|
||||
when value<-8 then classes += ' color-worst'
|
||||
when value>=-8 and value<-5 then classes += ' color-worse'
|
||||
when value>=-5 and value<-1 then classes += ' color-bad'
|
||||
when value>=-1 and value<1 then classes += ' color-neutral'
|
||||
when value>=1 and value<5 then classes += ' color-good'
|
||||
when value>=5 and value<10 then classes += ' color-better'
|
||||
when value>=10 then classes += ' color-best'
|
||||
return classes
|
||||
|
||||
view.fn "percent", (x, y) ->
|
||||
x=1 if x==0
|
||||
Math.round(x/y*100)
|
||||
|
||||
view.fn "round", (num) ->
|
||||
Math.round num
|
||||
|
||||
view.fn "gold", (num) ->
|
||||
if num
|
||||
return num.toFixed(1).split('.')[0]
|
||||
else
|
||||
return "0"
|
||||
|
||||
view.fn "silver", (num) ->
|
||||
if num
|
||||
num.toFixed(1).split('.')[1]
|
||||
else
|
||||
return "0"
|
||||
Loading…
Reference in a new issue