diff options
| author | Julien Mougenot <jum@odoo.com> | 2020-06-25 11:59:14 +0000 |
|---|---|---|
| committer | Julien Mougenot <jum@odoo.com> | 2020-06-30 07:22:12 +0000 |
| commit | c96de07f8593d525dd2992c06add68eb5c2cde8c (patch) | |
| tree | d1b2f2f1466428b0f458da1af02d8a12ace156f4 /addons/web/static/src/js/control_panel | |
| parent | 7e5ae026fd72d6ec0525f2b70820510bc488ec92 (diff) | |
[FIX] web: Allow default favorite filter over search default
Before this commit, when a search_default on a many2one field tried to
update its label after a name_get, the value was set on its initial
associated query element which could have been erased by a default
favorite.
Now, the model determines whether there is a default favorite before
processing default filters, preventing any unnecessary RPC.
closes odoo/odoo#53840
X-original-commit: ff834d0ba6f9b7eadc23c28dbbf892eba2058583
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Diffstat (limited to 'addons/web/static/src/js/control_panel')
| -rw-r--r-- | addons/web/static/src/js/control_panel/control_panel_model.js | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/addons/web/static/src/js/control_panel/control_panel_model.js b/addons/web/static/src/js/control_panel/control_panel_model.js index 67b9c999f74..a9500999793 100644 --- a/addons/web/static/src/js/control_panel/control_panel_model.js +++ b/addons/web/static/src/js/control_panel/control_panel_model.js @@ -544,23 +544,13 @@ odoo.define('web.ControlPanelModel', function (require) { * @private */ _activateDefaultFilters() { - const defaultFilters = []; - const defaultFavorites = []; - for (const fId in this.state.filters) { - if (this.state.filters[fId].isDefault) { - if (this.state.filters[fId].type === 'favorite') { - defaultFavorites.push(this.state.filters[fId]); - } else { - defaultFilters.push(this.state.filters[fId]); - } - } - } - if (this.activateDefaultFavorite && defaultFavorites.length) { + if (this.defaultFavoriteId) { // Activate default favorite - this.toggleFilter(defaultFavorites[0].id); + this.toggleFilter(this.defaultFavoriteId); } else { // Activate default filters - defaultFilters + Object.values(this.state.filters) + .filter((f) => f.isDefault && f.type !== 'favorite') .sort((f1, f2) => (f1.defaultRank || 100) - (f2.defaultRank || 100)) .forEach(f => { if (f.hasOptions) { @@ -589,9 +579,9 @@ odoo.define('web.ControlPanelModel', function (require) { * @private */ _addFilters() { + this._createGroupOfFavorites(); this._createGroupOfFiltersFromArch(); this._createGroupOfDynamicFilters(); - this._createGroupOfFavorites(); } /** @@ -707,6 +697,9 @@ odoo.define('web.ControlPanelModel', function (require) { this.favoriteFilters.forEach(irFilter => { const favorite = this._irFilterToFavorite(irFilter); this._createGroupOfFilters([favorite]); + if (this.activateDefaultFavorite && favorite.isDefault) { + this.defaultFavoriteId = favorite.id; + } }); } @@ -721,7 +714,7 @@ odoo.define('web.ControlPanelModel', function (require) { pregroup.forEach(preFilter => { const filter = Object.assign(preFilter, { groupId, id: filterId }); this.state.filters[filterId] = filter; - if (filter.isDefault && filter.type === 'field') { + if (!this.defaultFavoriteId && filter.isDefault && filter.type === 'field') { this._prepareDefaultLabel(filter); } filterId++; |
