diff --git a/addons/mail/static/src/js/views/activity/activity_renderer.js b/addons/mail/static/src/js/views/activity/activity_renderer.js
index 7b29ae707e1..0f9164d6c43 100644
--- a/addons/mail/static/src/js/views/activity/activity_renderer.js
+++ b/addons/mail/static/src/js/views/activity/activity_renderer.js
@@ -187,7 +187,7 @@ class ActivityRenderer extends AbstractRendererOwl {
this.activeFilter.activityTypeId = ev.detail.columnID;
this.activeFilter.resIds = Object.entries(this.props.grouped_activities)
.filter(([, resIds]) => ev.detail.columnID in resIds &&
- resIds[ev.detail.columnID].state === ev.detail.values.activeFilter)
+ resIds[ev.detail.columnID].state === ev.detail.values.activeFilter.value)
.map(([key]) => parseInt(key));
} else {
this.activeFilter.state = null;
diff --git a/addons/mail/static/src/xml/activity_view.xml b/addons/mail/static/src/xml/activity_view.xml
index c40d6d73b7d..dc978898163 100644
--- a/addons/mail/static/src/xml/activity_view.xml
+++ b/addons/mail/static/src/xml/activity_view.xml
@@ -6,7 +6,7 @@
|
@@ -46,7 +46,7 @@
- |
+ |
|
@@ -58,14 +58,15 @@
-
+
+ |
|
|
diff --git a/addons/mail/static/tests/activity_tests.js b/addons/mail/static/tests/activity_tests.js
index 8ad4b152b08..7d41db1da5b 100644
--- a/addons/mail/static/tests/activity_tests.js
+++ b/addons/mail/static/tests/activity_tests.js
@@ -686,4 +686,57 @@ QUnit.test("Schedule activity dialog uses the same search view as activity view"
])
});
+QUnit.test('Activity view: apply progressbar filter', async function (assert) {
+ assert.expect(9);
+
+ serverData.actions = {
+ 1: {
+ id: 1,
+ name: 'Task Action',
+ res_model: 'task',
+ type: 'ir.actions.act_window',
+ views: [[false, 'activity']],
+ }
+ };
+ serverData.views = {
+ 'task,false,activity':
+ `
+
+
+
+
+
+ `,
+ 'task,false,search': '',
+ };
+
+ const webClient = await createWebClient({ serverData, legacyParams: { withLegacyMockServer: true } });
+
+ await doAction(webClient, 1);
+
+ assert.containsNone(webClient.el.querySelector('.o_activity_view thead'),
+ '.o_activity_filter_planned,.o_activity_filter_today,.o_activity_filter_overdue,.o_activity_filter___false',
+ "should not have active filter");
+ assert.containsNone(webClient.el.querySelector('.o_activity_view tbody'),
+ '.o_activity_filter_planned,.o_activity_filter_today,.o_activity_filter_overdue,.o_activity_filter___false',
+ "should not have active filter");
+ assert.strictEqual(webClient.el.querySelector('.o_activity_view tbody .o_activity_record').textContent,
+ 'Office planning', "'Office planning' should be first record");
+ assert.containsOnce(webClient.el.querySelector('.o_activity_view tbody'), '.planned',
+ "other records should be available");
+
+ await testUtils.dom.click(webClient.el.querySelector('.o_kanban_counter_progress .progress-bar[data-filter="planned"]'));
+ assert.containsOnce(webClient.el.querySelector('.o_activity_view thead'), '.o_activity_filter_planned',
+ "planned should be active filter");
+ assert.containsN(webClient.el.querySelector('.o_activity_view tbody'), '.o_activity_filter_planned', 5,
+ "planned should be active filter");
+ assert.strictEqual(webClient.el.querySelector('.o_activity_view tbody .o_activity_record').textContent,
+ 'Meeting Room Furnitures', "'Office planning' should be first record");
+ const tr = webClient.el.querySelectorAll('.o_activity_view tbody tr')[1];
+ assert.hasClass(tr.querySelectorAll('td')[1], 'o_activity_empty_cell',
+ "other records should be hidden");
+ assert.containsNone(webClient.el.querySelector('.o_activity_view tbody'), 'planned',
+ "other records should be hidden");
+});
+
});
|