From 992de2223bf81cf96f13823a9cffa1c20905f711 Mon Sep 17 00:00:00 2001 From: Hardik Prajapati Date: Wed, 10 Mar 2021 09:59:32 +0000 Subject: [PATCH] [IMP] web: quicksearch on selection and boolean field Currently, the selection field and boolean field values are displays below the string 'search for: ' like, Search status for: input value New Running Cancelled so, this commit improves the quick search dropdown by displaying the selection field and boolean field value and strings in the same line like, Search Status: New Search Status: Running Search Status: Cancelled TaskID-2462138 closes odoo/odoo#67575 Signed-off-by: Aaron Bohy (aab) --- .../static/src/js/control_panel/search_bar.js | 2 +- addons/web/static/src/xml/base.xml | 6 ++- .../tests/control_panel/search_bar_tests.js | 42 +++++++++++++++---- 3 files changed, 39 insertions(+), 11 deletions(-) diff --git a/addons/web/static/src/js/control_panel/search_bar.js b/addons/web/static/src/js/control_panel/search_bar.js index 5ccdb6c04f4..50f3e7b6ad9 100644 --- a/addons/web/static/src/js/control_panel/search_bar.js +++ b/addons/web/static/src/js/control_panel/search_bar.js @@ -204,7 +204,7 @@ odoo.define('web.SearchBar', function (require) { } }); if (options.length) { - sources.push(source, ...options); + sources.push(...options); } // Any other type. } else if (this._validateSource(query, source)) { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 9adb490cf21..33fdfc4ffde 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -591,7 +591,7 @@
  • @@ -603,7 +603,9 @@ - + + Search : + Search at: diff --git a/addons/web/static/tests/control_panel/search_bar_tests.js b/addons/web/static/tests/control_panel/search_bar_tests.js index cdc50c75469..1cdfc75fba2 100644 --- a/addons/web/static/tests/control_panel/search_bar_tests.js +++ b/addons/web/static/tests/control_panel/search_bar_tests.js @@ -19,6 +19,7 @@ odoo.define('web.search_bar_tests', function (require) { birth_datetime: { string: "Birth DateTime", type: 'datetime' }, foo: { string: "Foo", type: 'char' }, bool: { string: "Bool", type: 'boolean' }, + status: { string: 'Status', type: 'selection', selection: [['draft', "New"], ['cancel', "Cancelled"]] }, }, records: [ { id: 1, display_name: "First record", foo: "yop", bar: 2, bool: true, birthday: '1983-07-15', birth_datetime: '1983-07-15 01:00:00' }, @@ -572,7 +573,7 @@ odoo.define('web.search_bar_tests', function (require) { }); QUnit.test('autocompletion with a boolean field', async function (assert) { - assert.expect(9); + assert.expect(11); this.archs['partner,false,search'] = ''; @@ -592,22 +593,23 @@ odoo.define('web.search_bar_tests', function (require) { await cpHelpers.editSearch(actionManager, "y"); - assert.containsN(actionManager, '.o_searchview_autocomplete li', 2); - assert.strictEqual(actionManager.$('.o_searchview_autocomplete li:last-child').text(), "Yes"); + assert.containsOnce(actionManager, '.o_searchview_autocomplete li'); + assert.strictEqual(actionManager.el.querySelector('.o_searchview_autocomplete li').innerText, "Search Bool: Yes"); + assert.doesNotHaveClass(actionManager.el.querySelector('.o_searchview_autocomplete li'), 'o_indent'); // select "Yes" - await testUtils.dom.click(actionManager.el.querySelector('.o_searchview_autocomplete li:last-child')); + await testUtils.dom.click(actionManager.el.querySelector('.o_searchview_autocomplete li')); await cpHelpers.removeFacet(actionManager, 0); await cpHelpers.editSearch(actionManager, "No"); - assert.containsN(actionManager, '.o_searchview_autocomplete li', 2); - assert.strictEqual(actionManager.$('.o_searchview_autocomplete li:last-child').text(), "No"); + assert.containsOnce(actionManager, '.o_searchview_autocomplete li'); + assert.strictEqual(actionManager.el.querySelector('.o_searchview_autocomplete li').innerText, "Search Bool: No"); + assert.doesNotHaveClass(actionManager.el.querySelector('.o_searchview_autocomplete li'), 'o_indent'); // select "No" - await testUtils.dom.click(actionManager.el.querySelector('.o_searchview_autocomplete li:last-child')); - + await testUtils.dom.click(actionManager.el.querySelector('.o_searchview_autocomplete li')); assert.verifySteps([ JSON.stringify([]), // initial search @@ -619,6 +621,30 @@ odoo.define('web.search_bar_tests', function (require) { actionManager.destroy(); }); + QUnit.test('autocompletion with a selection field', async function (assert) { + assert.expect(5); + + this.archs['partner,false,search'] = ''; + + const actionManager = await createActionManager({ + actions: this.actions, + archs: this.archs, + data: this.data, + }); + + await actionManager.doAction(1); + + await cpHelpers.editSearch(actionManager, "n"); + + assert.containsN(actionManager, '.o_searchview_autocomplete li', 2); + assert.strictEqual(actionManager.el.querySelector('.o_searchview_autocomplete li:first-child').innerText, "Search Status: New"); + assert.strictEqual(actionManager.el.querySelector('.o_searchview_autocomplete li:last-child').innerText, "Search Status: Cancelled"); + assert.doesNotHaveClass(actionManager.el.querySelector('.o_searchview_autocomplete li:first-child'), 'o_indent'); + assert.doesNotHaveClass(actionManager.el.querySelector('.o_searchview_autocomplete li:last-child'), 'o_indent'); + + actionManager.destroy(); + }); + QUnit.test("reference fields are supported in search view", async function (assert) { assert.expect(7);