1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
odoo.define('hr.employee_chat', function (require) {
'use strict';
var viewRegistry = require('web.view_registry');
var FormController = require('web.FormController');
var FormView = require('web.FormView');
var FormRenderer = require('web.FormRenderer');
var KanbanController = require('web.KanbanController');
var KanbanView = require('web.KanbanView');
var KanbanRenderer = require('web.KanbanRenderer');
var KanbanRecord = require('web.KanbanRecord');
const { Component } = owl;
// CHAT MIXIN
var ChatMixin = {
/**
* @override
*/
_render: function () {
var self = this;
return this._super.apply(this, arguments).then(function () {
var $chat_button = self.$el.find('.o_employee_chat_btn');
$chat_button.off('click').on('click', self._onOpenChat.bind(self));
});
},
destroy: function () {
if (this.$el) {
this.$el.find('.o_employee_chat_btn').off('click');
}
return this._super();
},
_onOpenChat: function (ev) {
ev.preventDefault();
ev.stopImmediatePropagation();
const env = Component.env;
env.messaging.openChat({ employeeId: this.state.data.id });
return true;
},
};
// USAGE OF CHAT MIXIN IN FORM VIEWS
var EmployeeFormRenderer = FormRenderer.extend(ChatMixin);
var EmployeeFormView = FormView.extend({
config: _.extend({}, FormView.prototype.config, {
Controller: FormController,
Renderer: EmployeeFormRenderer
}),
});
viewRegistry.add('hr_employee_form', EmployeeFormView);
// USAGE OF CHAT MIXIN IN KANBAN VIEWS
var EmployeeKanbanRecord = KanbanRecord.extend(ChatMixin);
var EmployeeKanbanRenderer = KanbanRenderer.extend({
config: Object.assign({}, KanbanRenderer.prototype.config, {
KanbanRecord: EmployeeKanbanRecord,
}),
});
var EmployeeKanbanView = KanbanView.extend({
config: _.extend({}, KanbanView.prototype.config, {
Controller: KanbanController,
Renderer: EmployeeKanbanRenderer
}),
});
viewRegistry.add('hr_employee_kanban', EmployeeKanbanView);
});
|