From 1fb3882cd478d2712d77d4e5edc4ee26ad6bdfbc Mon Sep 17 00:00:00 2001 From: Aaron Bohy Date: Fri, 9 Sep 2022 09:11:33 +0000 Subject: [PATCH] [FIX] web: kanban: display no content helper The no content helper logic (determining when it is displayed) in kanban is quite complicated. Apparently, in a kanban view grouped on a field that isn't a many2one, with no groups (and thus no records), and where we don't have the "group_create" permission, we want the no content helper to be displayed. At least, this is how it used to work in the legacy kanban view. This commit restores the previous behavior and encodes this situation in a test. In the future, it would probably be a good idea to sit down and challenge the corner cases of this feature. closes odoo/odoo#99914 Signed-off-by: Aaron Bohy (aab) --- .../src/views/kanban/kanban_renderer.js | 5 +-- .../src/views/kanban/kanban_renderer.xml | 28 ++++++++--------- .../static/tests/views/kanban_view_tests.js | 31 ++++++++++++++++++- 3 files changed, 47 insertions(+), 17 deletions(-) diff --git a/addons/web/static/src/views/kanban/kanban_renderer.js b/addons/web/static/src/views/kanban/kanban_renderer.js index 686fb6739b7..018df770d15 100644 --- a/addons/web/static/src/views/kanban/kanban_renderer.js +++ b/addons/web/static/src/views/kanban/kanban_renderer.js @@ -226,12 +226,13 @@ export class KanbanRenderer extends Component { return true; } if (isGrouped) { - if (!this.state.columnQuickCreateIsFolded) { + if (this.canCreateGroup() && !this.state.columnQuickCreateIsFolded) { return false; } if (groups.length === 0) { - return true; + return !this.props.list.groupedBy("m2o"); } + return this.props.list.records.length === 0; } return !model.hasData(); } diff --git a/addons/web/static/src/views/kanban/kanban_renderer.xml b/addons/web/static/src/views/kanban/kanban_renderer.xml index 6724ff12ba9..7c5dc17fbe3 100644 --- a/addons/web/static/src/views/kanban/kanban_renderer.xml +++ b/addons/web/static/src/views/kanban/kanban_renderer.xml @@ -143,24 +143,24 @@ exampleData="exampleData" groupByFieldString="props.list.groupByField.string" /> - - -
-
-
-
-
-
-
-
- - Avatar - + +
+
+
+
+
+
+
+
+ + Avatar + +
-
+ diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 3d21ddd70c3..5ed34007dc7 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -6272,7 +6272,7 @@ QUnit.module("Views", (hooks) => { ); QUnit.test( - "nocontent helper for grouped kanban with no records with no group_create", + "nocontent helper for grouped kanban (on m2o field) with no records with no group_create", async (assert) => { serverData.models.partner.records = []; @@ -6305,6 +6305,35 @@ QUnit.module("Views", (hooks) => { } ); + QUnit.test( + "nocontent helper for grouped kanban (on date field) with no records with no group_create", + async (assert) => { + serverData.models.partner.records = []; + + await makeView({ + type: "kanban", + resModel: "partner", + serverData, + arch: ` + + + +
+
+
+
`, + groupBy: ["date"], + noContentHelp: "No content helper", + }); + + assert.containsNone(target, ".o_kanban_group"); + assert.containsNone(target, ".o_kanban_record"); + assert.containsOnce(target, ".o_view_nocontent"); + assert.containsNone(target, ".o_column_quick_create"); + assert.containsNone(target, ".o_kanban_example_background"); + } + ); + QUnit.test("empty grouped kanban with sample data and no columns", async (assert) => { serverData.models.partner.records = [];