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.

81 lines
3.0 KiB

  1. //Copyright2018 Eficent <http://www.eficent.com>
  2. //License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
  3. odoo.define('mail.Activity.done', function(require) {
  4. "use strict";
  5. var mailUtils = require('mail.utils');
  6. var core = require('web.core');
  7. var utils = require('mail.utils');
  8. var time = require('web.time');
  9. var mail_activity = require('mail.Activity');
  10. var QWeb = core.qweb;
  11. var _t = core._t;
  12. // We are forced here to override the method, as there is no possibility
  13. // to inherit it.
  14. var setDelayLabel = function(activities) {
  15. var today = moment().startOf('day');
  16. _.each(activities, function(activity) {
  17. var to_display = '';
  18. var deadline = moment(activity.date_deadline).startOf('day');
  19. var diff = deadline.diff(today, 'days', true); // true means no rounding
  20. if(diff === 0){
  21. to_display = _t('Today');
  22. }else{
  23. if(diff < 0){ // overdue
  24. if(diff === -1){
  25. to_display = _t('Yesterday');
  26. }else{
  27. to_display = _.str.sprintf(_t('%d days overdue'), Math.abs(diff));
  28. }
  29. }else{ // due
  30. if(diff === 1){
  31. to_display = _t('Tomorrow');
  32. }else{
  33. to_display = _.str.sprintf(_t('Due in %d days'), Math.abs(diff));
  34. }
  35. }
  36. }
  37. activity.label_delay = to_display;
  38. });
  39. // We do not want to show the activities that have been completed.
  40. var open_activities = _.filter(activities, function(activity){
  41. return activity.done !== true
  42. });
  43. return open_activities;
  44. };
  45. var Activity = mail_activity.include({
  46. /**
  47. * @override
  48. * @private
  49. */
  50. _render: function () {
  51. _.each(this._activities, function (activity) {
  52. var note = mailUtils.parseAndTransform(activity.note || '', mailUtils.inline);
  53. var is_blank = (/^\s*$/).test(note);
  54. if (!is_blank) {
  55. activity.note = mailUtils.parseAndTransform(activity.note, mailUtils.addLink);
  56. } else {
  57. activity.note = '';
  58. }
  59. });
  60. var activities = setDelayLabel(this._activities);
  61. if (activities.length) {
  62. var nbActivities = _.countBy(activities, 'state');
  63. this.$el.html(QWeb.render('mail.activity_items', {
  64. activities: activities,
  65. nbPlannedActivities: nbActivities.planned,
  66. nbTodayActivities: nbActivities.today,
  67. nbOverdueActivities: nbActivities.overdue,
  68. dateFormat: time.getLangDateFormat(),
  69. datetimeFormat: time.getLangDatetimeFormat(),
  70. }));
  71. } else {
  72. this.$el.empty();
  73. }
  74. },
  75. });
  76. });