summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2019-01-23 08:32:29 +0000
committerGéry Debongnie <ged@odoo.com>2019-01-30 10:45:11 +0000
commitad9f6aee93cc1674c4e02c1810d8a4fcb7804c6c (patch)
tree94c12aefcb9622b3e3c5bc47efc040e60abc432d
parent1a774f9e0e9dbc67cf9661d6aa07f5ce5640d779 (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
-rw-r--r--addons/web/static/src/js/views/control_panel/control_panel_controller.js9
-rw-r--r--addons/web/static/src/js/views/control_panel/search/search_bar.js5
-rw-r--r--addons/web/static/src/js/widgets/auto_complete.js5
-rw-r--r--addons/web/static/tests/chrome/action_manager_tests.js2
-rw-r--r--addons/web/static/tests/views/search_view_tests.js33
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) {