You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

72 lines
2.7 KiB

//Copyright2018 Eficent <http://www.eficent.com>
//License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
odoo.define('mail.Activity.done', function(require) {
"use strict";
var core = require('web.core');
var utils = require('mail.utils');
var time = require('web.time');
var mail_activity = require('mail.Activity');
var QWeb = core.qweb;
var _t = core._t;
// We are forced here to override the method, as there is no possibility
// to inherit it.
var setDelayLabel = function(activities) {
var today = moment().startOf('day');
_.each(activities, function(activity) {
var to_display = '';
var deadline = moment(activity.date_deadline).startOf('day');
var diff = deadline.diff(today, 'days', true); // true means no rounding
if(diff === 0){
to_display = _t('Today');
}else{
if(diff < 0){ // overdue
if(diff === -1){
to_display = _t('Yesterday');
}else{
to_display = _.str.sprintf(_t('%d days overdue'), Math.abs(diff));
}
}else{ // due
if(diff === 1){
to_display = _t('Tomorrow');
}else{
to_display = _.str.sprintf(_t('Due in %d days'), Math.abs(diff));
}
}
}
activity.label_delay = to_display;
});
// We do not want to show the activities that have been completed.
var open_activities = _.filter(activities, function(activity){
return activity.done !== true
});
return open_activities;
};
var Activity = mail_activity.include({
_render: function () {
_.each(this.activities, function (activity) {
if (activity.note) {
activity.note = utils.parse_and_transform(activity.note, utils.add_link);
}
});
var activities = setDelayLabel(this.activities);
if (activities.length) {
var nbActivities = _.countBy(activities, 'state');
this.$el.html(QWeb.render('mail.activity_items', {
activities: activities,
nbPlannedActivities: nbActivities.planned,
nbTodayActivities: nbActivities.today,
nbOverdueActivities: nbActivities.overdue,
date_format: time.getLangDateFormat(),
datetime_format: time.getLangDatetimeFormat(),
}));
} else {
this.$el.empty();
}
},
});
});