diff --git a/addons/mail/models/mail_activity.py b/addons/mail/models/mail_activity.py index 71ccce481bf..ccb64f08bb4 100644 --- a/addons/mail/models/mail_activity.py +++ b/addons/mail/models/mail_activity.py @@ -666,6 +666,7 @@ class MailActivityMixin(models.AbstractModel): related='activity_ids.activity_type_id', readonly=False, search='_search_activity_type_id', groups="base.group_user") + activity_type_icon = fields.Char('Activity Type Icon', related='activity_ids.icon') activity_date_deadline = fields.Date( 'Next Activity Deadline', compute='_compute_activity_date_deadline', search='_search_activity_date_deadline', diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js index ed060fe1e8d..8a59c976ba3 100644 --- a/addons/mail/static/src/js/activity.js +++ b/addons/mail/static/src/js/activity.js @@ -768,6 +768,7 @@ const ListActivity = KanbanActivity.extend({ fieldDependencies: _.extend({}, KanbanActivity.prototype.fieldDependencies, { activity_summary: {type: 'char'}, activity_type_id: {type: 'many2one', relation: 'mail.activity.type'}, + activity_type_icon: {type: 'char'}, }), label: _lt('Next Activity'), @@ -795,6 +796,9 @@ const ListActivity = KanbanActivity.extend({ } this.$('.o_activity_summary').text(text); } + if (this.recordData.activity_type_icon) { + this.el.querySelector('.o_activity_btn > span').classList.replace('fa-clock-o', this.recordData.activity_type_icon); + } }, //-------------------------------------------------------------------------- diff --git a/addons/mail/static/src/xml/web_kanban_activity.xml b/addons/mail/static/src/xml/web_kanban_activity.xml index 58b8c4bd6d4..5b3491ea50c 100644 --- a/addons/mail/static/src/xml/web_kanban_activity.xml +++ b/addons/mail/static/src/xml/web_kanban_activity.xml @@ -68,6 +68,7 @@
+ -
@@ -81,10 +82,6 @@ -
- - -
diff --git a/addons/mail/static/tests/chatter_tests.js b/addons/mail/static/tests/chatter_tests.js index 96e8f6f2e74..13f11348661 100644 --- a/addons/mail/static/tests/chatter_tests.js +++ b/addons/mail/static/tests/chatter_tests.js @@ -923,7 +923,7 @@ QUnit.test('list activity widget with no activity', async function (assert) { session: {uid: 2}, }); - assert.containsOnce(list, '.o_mail_activity .o_activity_color_default'); + assert.containsOnce(list, '.o_mail_activity .o_activity_color_default.fa-clock-o'); assert.strictEqual(list.$('.o_activity_summary').text(), ''); assert.verifySteps(['/web/dataset/search_read']); @@ -938,6 +938,7 @@ QUnit.test('list activity widget with activities', async function (assert) { this.data.partner.records[0].activity_state = 'today'; this.data.partner.records[0].activity_summary = 'Call with Al'; this.data.partner.records[0].activity_type_id = 3; + this.data.partner.records[0].activity_type_icon = 'fa-phone'; this.data.partner.records.push({ id: 44, @@ -959,11 +960,11 @@ QUnit.test('list activity widget with activities', async function (assert) { }); const $firstRow = list.$('.o_data_row:first'); - assert.containsOnce($firstRow, '.o_mail_activity .o_activity_color_today'); + assert.containsOnce($firstRow, '.o_mail_activity .o_activity_color_today.fa-phone'); assert.strictEqual($firstRow.find('.o_activity_summary').text(), 'Call with Al'); const $secondRow = list.$('.o_data_row:nth(1)'); - assert.containsOnce($secondRow, '.o_mail_activity .o_activity_color_planned'); + assert.containsOnce($secondRow, '.o_mail_activity .o_activity_color_planned.fa-clock-o'); assert.strictEqual($secondRow.find('.o_activity_summary').text(), 'Type 2'); assert.verifySteps(['/web/dataset/search_read']);