From f56a2b41291a00207f495a6c3ffd2884536f54c8 Mon Sep 17 00:00:00 2001 From: Jorge Pinna Puissant Date: Tue, 17 Jan 2023 13:57:25 +0000 Subject: [PATCH] [FIX] web: keep filter when leaving a kanban view and coming back - Open a kanban view; - Select a progress bar filter; - Open a record; - Came back to kanban using the breadcrumb. Before this commit, the progress bar is selected, but the records aren't filtered. Now, the kanban is exactly the same as it was when we click on the record, the progress bar is selected and the records filtered. closes odoo/odoo#110224 X-original-commit: ca864d7e6d510ef6410898099364d854a15150d7 Signed-off-by: Aaron Bohy (aab) Signed-off-by: Jorge Pinna Puissant (jpp) Co-authored-by: Aaron Bohy --- .../static/src/views/kanban/kanban_model.js | 1 + .../static/tests/views/kanban_view_tests.js | 63 +++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/addons/web/static/src/views/kanban/kanban_model.js b/addons/web/static/src/views/kanban/kanban_model.js index d934301cec2..fd65f8e43af 100644 --- a/addons/web/static/src/views/kanban/kanban_model.js +++ b/addons/web/static/src/views/kanban/kanban_model.js @@ -69,6 +69,7 @@ class KanbanGroup extends Group { /** @type {ProgressBar[]} */ this.progressBars = this._generateProgressBars(); this.progressValue = markRaw(state.progressValue || { active: null }); + this.list.domain = this.getProgressBarDomain(); this.tooltip = []; this.model.transaction.register({ diff --git a/addons/web/static/tests/views/kanban_view_tests.js b/addons/web/static/tests/views/kanban_view_tests.js index 3da02ceb159..4e0d9d74194 100644 --- a/addons/web/static/tests/views/kanban_view_tests.js +++ b/addons/web/static/tests/views/kanban_view_tests.js @@ -10668,6 +10668,69 @@ QUnit.module("Views", (hooks) => { assert.containsN(target, ".o_kanban_record", 2); }); + QUnit.test("filter groups are kept when leaving and coming back", async (assert) => { + serverData.models.partner.records[1].state = "abc"; + serverData.views = { + "partner,false,kanban": ` + + + + +
+ +
+
+
+
`, + "partner,false,search": "", + "partner,false,form": ` +
+ + `, + }; + const webClient = await createWebClient({ serverData }); + await doAction(webClient, { + name: "Partners", + res_model: "partner", + type: "ir.actions.act_window", + views: [ + [false, "kanban"], + [false, "form"], + ], + context: { + group_by: ["bar"], + }, + }); + + // Filter on state "abc" => matches 2 records + await click(getProgressBars(1)[0]); + + assert.deepEqual(getCardTexts(0), ["4"]); + assert.deepEqual(getCardTexts(1), ["1", "2"]); + + // open a record + await click(target.querySelectorAll(".o_kanban_record")[1]); + assert.containsOnce(target, ".o_form_view"); + + // go back to kanban view + await click(target.querySelector(".breadcrumb-item a")); + + assert.deepEqual(getCardTexts(0), ["4"]); + assert.deepEqual(getCardTexts(1), ["1", "2"]); + + // open a record + await click(target.querySelectorAll(".o_kanban_record")[1]); + assert.containsOnce(target, ".o_form_view"); + + // select another state + await click(target.querySelectorAll("input.o_radio_input")[1]); + // go back to kanban view + await click(target.querySelector(".breadcrumb-item a")); + + assert.deepEqual(getCardTexts(0), ["4"]); + assert.deepEqual(getCardTexts(1), ["2"]); + }); + QUnit.test( "folded groups are kept when leaving and coming back (grouped by date)", async (assert) => {