summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorMartin Geubelle <mge@odoo.com>2019-02-26 15:18:54 +0000
committerMartin Geubelle <mge@odoo.com>2019-02-27 10:33:41 +0000
commit8316c2d21025b97a80caefb5351c794c1c87dc45 (patch)
tree6894aa7aebdf5cff60027f8d93a961aa9253789d /addons/web/static/src
parentf9d3b5b7dfe15fb53f14fa0a0ae91bbeded9939b (diff)
[FIX] web: correctly handle (no result) selection in search
In the recent control panel refactoring, selecting '(no result)' (when using the autocomplete on a many2one for example) was no correctly handled and was leading to a traceback. It is now correctly handled and the search bar is correctly re-rendered. Task 1936745 closes odoo/odoo#31438
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/views/control_panel/control_panel_controller.js10
-rw-r--r--addons/web/static/src/js/views/control_panel/search/search_bar.js10
-rw-r--r--addons/web/static/src/js/widgets/auto_complete.js6
3 files changed, 20 insertions, 6 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 10413e725ab..cbd7b17d507 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
@@ -17,6 +17,7 @@ var ControlPanelController = mvc.Controller.extend({
activate_time_range: '_onActivateTimeRange',
autocompletion_filter: '_onAutoCompletionFilter',
reload: '_onReload',
+ reset: '_onReset',
},
/**
@@ -238,6 +239,15 @@ var ControlPanelController = mvc.Controller.extend({
ev.stopPropagation();
this.trigger_up('search', this.model.getQuery());
},
+ /**
+ * @private
+ * @param {OdooEvent} ev
+ */
+ _onReset: function (ev) {
+ ev.stopPropagation();
+ var state = this.model.get();
+ this.renderer.updateState(state);
+ },
});
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 77d6d7fa5e9..45004fd04ef 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
@@ -184,10 +184,16 @@ var SearchBar = Widget.extend({
*/
_onAutoCompleteSelected: function (e, ui) {
e.preventDefault();
- var filter = ui.item.facet.filter;
+ var facet = ui.item.facet;
+ if (!facet) {
+ // this happens when selecting "(no result)" item
+ this.trigger_up('reset');
+ return;
+ }
+ var filter = facet.filter;
if (filter.type === 'field') {
var values = filter.autoCompleteValues;
- values.push(ui.item.facet.values[0]);
+ values.push(facet.values[0]);
this.trigger_up('autocompletion_filter', {
filterId: filter.id,
autoCompleteValues: values,
diff --git a/addons/web/static/src/js/widgets/auto_complete.js b/addons/web/static/src/js/widgets/auto_complete.js
index 6dd78f8f730..4da54cf8b5c 100644
--- a/addons/web/static/src/js/widgets/auto_complete.js
+++ b/addons/web/static/src/js/widgets/auto_complete.js
@@ -201,10 +201,8 @@ return Widget.extend({
this.current_result = $li.data('result');
},
select_item: function (ev) {
- if (this.current_result.facet) {
- this.select(ev, {item: {facet: this.current_result.facet}});
- this.close();
- }
+ this.select(ev, {item: {facet: this.current_result.facet}});
+ this.close();
},
show: function () {
this.$el.show();