diff options
| author | Lucas Perais (lpe) <lpe@odoo.com> | 2018-12-11 09:23:17 +0000 |
|---|---|---|
| committer | Lucas Perais (lpe) <lpe@odoo.com> | 2019-01-17 12:37:25 +0000 |
| commit | 187c32c2c72fc0668a97c97a99123107aebf3d06 (patch) | |
| tree | 1ff26b6b807188a40ca5fe8c0bacea9bda2f72dc /addons/web/static/src | |
| parent | 91fb15510ff549e7544f6858f7979b57fae875e7 (diff) | |
[FIX] web: pivot correct context after reload
Open a pivot view with default filters automatically activating
Disable those filters
Change the groupBys on the rows and cols of the pivot
Save your result as a favorite filter
Before this commit, the filter did not contain the context information for columns groupby
Also, the search view did not exploit the context of the new filter as it should be
After this commit, the flow works as expected
OPW 1913732
closes odoo/odoo#29415
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/chrome/search_menus.js | 6 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/pivot/pivot_model.js | 35 |
2 files changed, 26 insertions, 15 deletions
diff --git a/addons/web/static/src/js/chrome/search_menus.js b/addons/web/static/src/js/chrome/search_menus.js index 99e8bd6e799..c52be2de08b 100644 --- a/addons/web/static/src/js/chrome/search_menus.js +++ b/addons/web/static/src/js/chrome/search_menus.js @@ -191,6 +191,10 @@ return Widget.extend({ icon: 'fa-star', field: { get_context: function () { + var filterContext = filter.context; + if (typeof filter.context === 'string') { + filterContext = pyeval.eval('context', filter.context); + } var sortParsed = JSON.parse(filter.sort || "[]"); var orderedBy = []; _.each(sortParsed, function (sort) { @@ -200,7 +204,7 @@ return Widget.extend({ }); }); - return _.defaults({}, filter.context, {orderedBy : orderedBy}); + return _.defaults({}, filterContext, {orderedBy : orderedBy}); }, get_groupby: function () { return [filter.context]; }, get_domain: function () { return filter.domain; } diff --git a/addons/web/static/src/js/views/pivot/pivot_model.js b/addons/web/static/src/js/views/pivot/pivot_model.js index 6de39c0b535..95815a03e76 100644 --- a/addons/web/static/src/js/views/pivot/pivot_model.js +++ b/addons/web/static/src/js/views/pivot/pivot_model.js @@ -191,7 +191,7 @@ var PivotModel = AbstractModel.extend({ return {has_data: false}; } return { - colGroupBys: this.data.main_col.groupbys, + colGroupBys: this.data.main_col.root.groupbys, context: this.data.context, domain: this.data.domain, fields: this.fields, @@ -200,7 +200,7 @@ var PivotModel = AbstractModel.extend({ mainColWidth: this.data.main_col.width, measures: this.data.measures, rows: !isRaw && this._computeRows(), - rowGroupBys: this.data.main_row.groupbys, + rowGroupBys: this.data.main_row.root.groupbys, sortedColumn: this.data.sorted_column, }; }, @@ -266,22 +266,19 @@ var PivotModel = AbstractModel.extend({ return this._loadData(); } - var old_row_root = this.data.main_row.root; - var old_col_root = this.data.main_col.root; + var old_row = this.data.main_row; + var old_col = this.data.main_col; return this._loadData().then(function () { - var new_groupby_length; if (!('groupBy' in params) && !('pivot_row_groupby' in (params.context || {}))) { // we only update the row groupbys according to the old groupbys // if we don't have the key 'groupBy' in params. In that case, // we want to have the full open state for the groupbys. - self._updateTree(old_row_root, self.data.main_row.root); - new_groupby_length = self._getHeaderDepth(self.data.main_row.root) - 1; - self.data.main_row.groupbys = old_row_root.groupbys.slice(0, new_groupby_length); + self._updateTree(old_row.root, self.data.main_row.root); + self._updateMainGroupBys(old_row, self.data.main_row); } - self._updateTree(old_col_root, self.data.main_col.root); - new_groupby_length = self._getHeaderDepth(self.data.main_col.root) - 1; - self.data.main_row.groupbys = old_row_root.groupbys.slice(0, new_groupby_length); + self._updateTree(old_col.root, self.data.main_col.root); + self._updateMainGroupBys(old_col, self.data.main_col); }); }, /** @@ -644,9 +641,6 @@ var PivotModel = AbstractModel.extend({ } } - this.data.main_row.groupbys = rowGroupBys; - this.data.main_col.groupbys = colGroupBys; - main_row_header.other_root = main_col_header; main_col_header.other_root = main_row_header; @@ -716,6 +710,19 @@ var PivotModel = AbstractModel.extend({ } }, /** + * Updates the groupBys that the main[row | col] holds + * + * @private + * @param {Object} old: The main abstract header before reload + * @param {Object} main: The main abstract header after reload + * + */ + _updateMainGroupBys: function (old, main) { + var new_groupby_length = this._getHeaderDepth(main.root) - 1; + var new_groupby_list = old.root.groupbys.slice(0, new_groupby_length); + main.root.groupbys = new_groupby_list; + }, + /** * @param {Object} old_tree * @param {Object} new_tree */ |
