From 296413a616204f5fbcb4a38dcb6bb69cea32ab8c Mon Sep 17 00:00:00 2001 From: "Michael (mcm)" Date: Mon, 19 Dec 2022 12:27:47 +0000 Subject: [PATCH] [IMP] web: edit view in current action Before this commit, editing views from debug menu opened a dialog and the user needed to refresh the page to see the changes. Now, the edit view is opened in a new action so when the user goes back in the breadcrumb, the view is updated. task id: 3081332 closes odoo/odoo#108524 Signed-off-by: Aaron Bohy (aab) --- .../web/static/src/core/debug/debug_utils.js | 2 +- .../tests/core/debug/debug_manager_tests.js | 37 +++++++++++++------ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/addons/web/static/src/core/debug/debug_utils.js b/addons/web/static/src/core/debug/debug_utils.js index 6abd5a89dc4..2dfaee620e9 100644 --- a/addons/web/static/src/core/debug/debug_utils.js +++ b/addons/web/static/src/core/debug/debug_utils.js @@ -8,6 +8,6 @@ export function editModelDebug(env, title, model, id) { type: "ir.actions.act_window", views: [[false, "form"]], view_mode: "form", - target: "new", + target: "current", }); } diff --git a/addons/web/static/tests/core/debug/debug_manager_tests.js b/addons/web/static/tests/core/debug/debug_manager_tests.js index 21abe9bf608..980bbfc391b 100644 --- a/addons/web/static/tests/core/debug/debug_manager_tests.js +++ b/addons/web/static/tests/core/debug/debug_manager_tests.js @@ -367,18 +367,27 @@ QUnit.module("DebugMenu", (hooks) => { serverData.views["pony,18,pivot"] = ""; serverData.models["ir.ui.view"] = { fields: {}, - records: [{ id: 18 }], + records: [{ id: 18, name: "Edit view" }], }; serverData.views["ir.ui.view,false,form"] = `
`; + serverData.views["ir.ui.view,false,search"] = ``; const webClient = await createWebClient({ serverData, mockRPC }); await doAction(webClient, 1234); await click(target.querySelector(".o_debug_manager button")); await click(target.querySelector(".o_debug_manager .dropdown-item")); - assert.containsOnce(target, ".modal .o_form_view"); + assert.containsN(target, ".breadcrumb-item", 2); assert.strictEqual( - target.querySelector(".modal .o_form_view .o_field_widget[name=id] input").value, - "18" + target.querySelector(".breadcrumb-item.active").textContent, + "Edit view" + ); + assert.strictEqual(target.querySelector(".o_field_widget[name=id] input").value, "18"); + + await click(target, ".breadcrumb .o_back_button"); + assert.containsOnce(target, ".breadcrumb-item"); + assert.strictEqual( + target.querySelector(".breadcrumb-item.active").textContent, + "Reporting Ponies" ); }); @@ -403,20 +412,22 @@ QUnit.module("DebugMenu", (hooks) => { serverData.actions[1].search_view_id = [293, "some_search_view"]; serverData.models["ir.ui.view"] = { fields: {}, - records: [{ id: 293 }], + records: [{ id: 293, name: "Edit view" }], }; serverData.views["ir.ui.view,false,form"] = `
`; + serverData.views["ir.ui.view,false,search"] = ``; const webClient = await createWebClient({ serverData, mockRPC }); await doAction(webClient, 1); await click(target.querySelector(".o_debug_manager button")); await click(target.querySelector(".o_debug_manager .dropdown-item")); await legacyExtraNextTick(); - assert.containsOnce(target, ".modal .o_form_view"); + assert.containsN(target, ".breadcrumb-item", 2); assert.strictEqual( - target.querySelector(".modal .o_form_view .o_field_widget[name=id] input").value, - "293" + target.querySelector(".breadcrumb-item.active").textContent, + "Edit view" ); + assert.strictEqual(target.querySelector(".o_field_widget[name=id] input").value, "293"); }); QUnit.test("edit search view on action without search_view_id", async (assert) => { @@ -461,10 +472,11 @@ QUnit.module("DebugMenu", (hooks) => { }; serverData.models["ir.ui.view"] = { fields: {}, - records: [{ id: 293 }], + records: [{ id: 293, name: "Edit view" }], }; serverData.views = {}; serverData.views["ir.ui.view,false,form"] = `
`; + serverData.views["ir.ui.view,false,search"] = ``; serverData.views["partner,false,toy"] = ``; serverData.views["partner,293,search"] = ``; @@ -475,11 +487,12 @@ QUnit.module("DebugMenu", (hooks) => { await click(target.querySelector(".o_debug_manager button")); await click(target.querySelector(".o_debug_manager .dropdown-item")); await legacyExtraNextTick(); - assert.containsOnce(target, ".modal .o_form_view"); + assert.containsN(target, ".breadcrumb-item", 2); assert.strictEqual( - target.querySelector(".modal .o_form_view .o_field_widget[name=id] input").value, - "293" + target.querySelector(".breadcrumb-item.active").textContent, + "Edit view" ); + assert.strictEqual(target.querySelector(".o_field_widget[name=id] input").value, "293"); }); QUnit.test(