habitica/lib/app/helpers.js

90 lines
2 KiB
JavaScript
Raw Normal View History

2012-07-28 21:02:09 +00:00
// Generated by CoffeeScript 1.3.3
2012-09-25 03:12:13 +00:00
var dayMapping, moment;
moment = require('moment');
2012-07-28 21:02:09 +00:00
module.exports.daysBetween = function(a, b) {
return Math.abs(moment(a).sod().diff(moment(b).sod(), 'days'));
};
2012-09-25 03:12:13 +00:00
module.exports.dayMapping = dayMapping = {
0: 'su',
1: 'm',
2: 't',
3: 'w',
4: 'th',
5: 'f',
6: 's',
7: 'su'
};
module.exports.viewHelpers = function(view) {
view.fn('taskClasses', function(task) {
var classes, completed, repeat, type, value;
type = task.type, completed = task.completed, value = task.value, repeat = task.repeat;
2012-07-28 21:02:09 +00:00
classes = type;
if (completed || (repeat && repeat[dayMapping[moment().day()]] === false)) {
2012-07-28 21:02:09 +00:00
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";
}
});
view.fn("silver", function(num) {
2012-07-28 21:02:09 +00:00
if (num) {
return num.toFixed(1).split('.')[1];
} else {
return "0";
}
});
view.fn("money", function(num) {
if (num) {
return num.toFixed(2);
} else {
return "0.00";
}
});
view.fn("lessThan", function(a, b) {
return a < b;
});
2012-09-19 01:51:29 +00:00
return view.fn("tokens", function(money) {
return money / 0.25;
});
2012-07-28 21:02:09 +00:00
};