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.
 
 
 
 

99 lines
3.7 KiB

odoo.define('mail_activity_team.systray', function (require) {
"use strict";
var systray = require('mail.systray');
var session = require("web.session");
systray.ActivityMenu.include({
events: _.extend({}, systray.ActivityMenu.prototype.events, {
'click .o_filter_button': 'on_click_filter_button',
}),
start: function () {
this._super.apply(this, arguments);
this.$filter_buttons = this.$('.o_filter_button');
this.$my_activities = this.$filter_buttons.first();
this.filter = 'my';
session.user_context = _.extend({}, session.user_context, {
'team_activities': false
});
},
_updateCounter: function (data) {
this._super.apply(this, arguments);
this.$('.o_new_notification_counter').text(this.activityCounter);
},
on_click_filter_button: function (event) {
var self = this;
event.stopPropagation();
self.$filter_buttons.removeClass('active');
var $target = $(event.currentTarget);
$target.addClass('active');
self.filter = $target.data('filter');
session.user_context = _.extend({}, session.user_context, {
'team_activities': self.filter === 'team'
});
self._updateActivityPreview();
},
_onActivityFilterClick: function (event) {
if (this.filter === 'my') {
this._super.apply(this, arguments);
}
if (this.filter === 'team') {
var data = _.extend(
{},
$(event.currentTarget).data(),
$(event.target).data()
);
var context = {};
if (data.filter === 'my') {
context.search_default_activities_overdue = 1;
context.search_default_activities_today = 1;
} else {
context['search_default_activities_' + data.filter] = 1;
}
this.do_action({
type: 'ir.actions.act_window',
name: data.model_name,
res_model: data.res_model,
views: [[false, 'kanban'], [false, 'form']],
search_view_id: [false],
domain: [
['activity_team_user_ids', 'in', session.uid]
],
context:context,
});
}
},
_getActivityData: function(){
var self = this;
return self._super.apply(self, arguments).then(function (data) {
session.user_context = _.extend({}, session.user_context, {
'team_activities': !session.user_context['team_activities'],
});
self._rpc({
model: 'res.users',
method: 'activity_user_count',
kwargs: {
context: session.user_context,
},
}).then(function (data) {
self.activityCounter += _.reduce(data, function(
total_count, p_data
){ return total_count + p_data.total_count; }, 0);
self.$('.o_new_notification_counter').text(self.activityCounter);
self.$el.toggleClass('o_no_notification', !self.activityCounter);
session.user_context = _.extend({}, session.user_context, {
'team_activities': !session.user_context['team_activities'],
});
});
});
}
});
});