mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
44 lines
1.4 KiB
JavaScript
44 lines
1.4 KiB
JavaScript
import moment from 'moment';
|
|
import _ from 'lodash';
|
|
|
|
/*
|
|
Preen history for users with > 7 history entries
|
|
This takes an infinite array of single day entries [day day day day day...], and turns it into a condensed array
|
|
of averages, condensing more the further back in time we go. Eg, 7 entries each for last 7 days; 1 entry each week
|
|
of this month; 1 entry for each month of this year; 1 entry per previous year: [day*7 week*4 month*12 year*infinite]
|
|
*/
|
|
|
|
module.exports = function(history) {
|
|
var newHistory, preen, thisMonth;
|
|
history = _.filter(history, function(h) {
|
|
return !!h;
|
|
});
|
|
newHistory = [];
|
|
preen = function(amount, groupBy) {
|
|
var groups;
|
|
groups = _.chain(history).groupBy(function(h) {
|
|
return moment(h.date).format(groupBy);
|
|
}).sortBy(function(h, k) {
|
|
return k;
|
|
}).value();
|
|
groups = groups.slice(-amount);
|
|
groups.pop();
|
|
return _.each(groups, function(group) {
|
|
newHistory.push({
|
|
date: moment(group[0].date).toDate(),
|
|
value: _.reduce(group, (function(m, obj) {
|
|
return m + obj.value;
|
|
}), 0) / group.length
|
|
});
|
|
return true;
|
|
});
|
|
};
|
|
preen(50, "YYYY");
|
|
preen(moment().format('MM'), "YYYYMM");
|
|
thisMonth = moment().format('YYYYMM');
|
|
newHistory = newHistory.concat(_.filter(history, function(h) {
|
|
return moment(h.date).format('YYYYMM') === thisMonth;
|
|
}));
|
|
return newHistory;
|
|
};
|