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
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'],
|
|
});
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
});
|