[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
This commit is contained in:
Géry Debongnie
2019-01-30 10:45:11 +00:00
parent 1a774f9e0e
commit ad9f6aee93
5 changed files with 52 additions and 2 deletions
@@ -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;
@@ -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;
}
},
});
@@ -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;
@@ -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
@@ -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) {