diff options
| author | Géry Debongnie <ged@odoo.com> | 2019-01-23 08:32:29 +0000 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2019-01-30 10:45:11 +0000 |
| commit | ad9f6aee93cc1674c4e02c1810d8a4fcb7804c6c (patch) | |
| tree | 94c12aefcb9622b3e3c5bc47efc040e60abc432d | |
| parent | 1a774f9e0e9dbc67cf9661d6aa07f5ce5640d779 (diff) | |
[FIX] web: reload view when pressing enter in search bar
Before the control panel refactoring, whenever a user pressed ENTER in
the search bar (with no text), the current view was reloaded. This
untested behaviour was changed (not on purpose) with that refactoring:
instead of reloading, the search view add a useless filter in the list
of facets.
We restore the previous behaviour in this commit.
closes odoo/odoo#30503
5 files changed, 52 insertions, 2 deletions
diff --git a/addons/web/static/src/js/views/control_panel/control_panel_controller.js b/addons/web/static/src/js/views/control_panel/control_panel_controller.js index 3d6e62f4bf9..10413e725ab 100644 --- a/addons/web/static/src/js/views/control_panel/control_panel_controller.js +++ b/addons/web/static/src/js/views/control_panel/control_panel_controller.js @@ -16,6 +16,7 @@ var ControlPanelController = mvc.Controller.extend({ new_groupBy: '_onNewGroupBy', activate_time_range: '_onActivateTimeRange', autocompletion_filter: '_onAutoCompletionFilter', + reload: '_onReload', }, /** @@ -229,6 +230,14 @@ var ControlPanelController = mvc.Controller.extend({ this.model.createNewGroupBy(ev.data); this._reportNewQueryAndRender(); }, + /** + * @private + * @param {OdooEvent} ev + */ + _onReload: function (ev) { + ev.stopPropagation(); + this.trigger_up('search', this.model.getQuery()); + }, }); return ControlPanelController; diff --git a/addons/web/static/src/js/views/control_panel/search/search_bar.js b/addons/web/static/src/js/views/control_panel/search/search_bar.js index f9fa15fe67d..7f0feda4516 100644 --- a/addons/web/static/src/js/views/control_panel/search/search_bar.js +++ b/addons/web/static/src/js/views/control_panel/search/search_bar.js @@ -216,6 +216,11 @@ var SearchBar = Widget.extend({ this.trigger_up('facet_removed'); } break; + case $.ui.keyCode.ENTER: + if (this.$input.val() === '') { + this.trigger_up('reload'); + } + break; } }, }); diff --git a/addons/web/static/src/js/widgets/auto_complete.js b/addons/web/static/src/js/widgets/auto_complete.js index a25dc0150f5..33405aa4196 100644 --- a/addons/web/static/src/js/widgets/auto_complete.js +++ b/addons/web/static/src/js/widgets/auto_complete.js @@ -55,7 +55,10 @@ return Widget.extend({ } }); this.$input.on('keypress', function (ev) { - self.search_string = self.search_string + String.fromCharCode(ev.which); + if (ev.which > 31 && ev.which !== 127) { + // we filter control character out of the search string + self.search_string = self.search_string + String.fromCharCode(ev.which); + } if (self.search_string.length) { self.searching = true; var search_string = self.search_string; diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 990c166a419..291084402a9 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -3807,6 +3807,7 @@ QUnit.module('ActionManager', { actionManager.doAction(3); var $searchInput = $('.o_searchview input'); + $searchInput.val('m'); $searchInput.trigger($.Event('keypress', {key: 'm', which: 109, keyCode: 109})); $searchInput.trigger($.Event('keydown', {key: 'Enter', which: 13, keyCode: 13})); @@ -3815,6 +3816,7 @@ QUnit.module('ActionManager', { // Triggering the do_search above will kill the current searchview Input $searchInput = $('.o_searchview input'); + $searchInput.val('o'); $searchInput.trigger($.Event('keypress', {key: 'o', which: 111, keyCode: 111})); // We have something in the input of the search view. Making the search_read diff --git a/addons/web/static/tests/views/search_view_tests.js b/addons/web/static/tests/views/search_view_tests.js index 0714a5157e5..53f02f9e6cc 100644 --- a/addons/web/static/tests/views/search_view_tests.js +++ b/addons/web/static/tests/views/search_view_tests.js @@ -2,7 +2,6 @@ odoo.define('web.search_view_tests', function (require) { "use strict"; var FormView = require('web.FormView'); -var ListView = require('web.ListView'); var testUtils = require('web.test_utils'); var createActionManager = testUtils.createActionManager; @@ -1027,6 +1026,7 @@ QUnit.module('Search View', { assert.strictEqual(searchRead, 1, "there should be 1 search_read"); // 'r' key to filter on bar "First Record" + $('.o_searchview_input').val('r'); $('.o_searchview_input').trigger($.Event('keypress', { which: 82, keyCode: 82 })); $('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.DOWN, keyCode: $.ui.keyCode.DOWN })); $('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.RIGHT, keyCode: $.ui.keyCode.RIGHT })); @@ -1038,6 +1038,7 @@ QUnit.module('Search View', { assert.strictEqual(searchRead, 2, "there should be 2 search_read"); // 'r' key to filter on bar "Second Record" + $('.o_searchview_input').val('r'); $('.o_searchview_input').trigger($.Event('keypress', { which: 82, keyCode: 82 })); $('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.DOWN, keyCode: $.ui.keyCode.DOWN })); $('.o_searchview_input').trigger($.Event('keydown', { which: $.ui.keyCode.RIGHT, keyCode: $.ui.keyCode.RIGHT })); @@ -1052,6 +1053,36 @@ QUnit.module('Search View', { actionManager.destroy(); }); + QUnit.test('no search text triggers a reload', function (assert) { + assert.expect(2); + var rpcs = 0; + var actionManager = createActionManager({ + actions: this.actions, + archs: this.archs, + data: this.data, + mockRPC: function () { + rpcs++; + return this._super.apply(this, arguments); + }, + }); + + actionManager.doAction(10); + rpcs = 0; + $('.o_searchview_input').trigger($.Event('keydown', { + which: $.ui.keyCode.ENTER, + keyCode: $.ui.keyCode.ENTER, + })); + $('.o_searchview_input').trigger($.Event('keyup', { + which: $.ui.keyCode.ENTER, + keyCode: $.ui.keyCode.ENTER, + })); + + assert.containsNone(actionManager, '.o_searchview_facet_label'); + assert.strictEqual(rpcs, 2, "should have reloaded"); + + actionManager.destroy(); + }); + QUnit.module('TimeRangeMenu'); QUnit.test('time range menu stays hidden', function (assert) { |
