diff options
| author | Christophe Simonis <chs@odoo.com> | 2017-06-15 18:46:47 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2017-06-15 18:46:47 +0200 |
| commit | ed2ddeccdfaac46acb4d4bfbdac5f1b570f0829c (patch) | |
| tree | 5d0c41f089c8deddd753a7ec61217ee33d007451 /addons/web/static/src/js/views/pivot | |
| parent | 156e07f6387b3e2b8915b1bd8624195d7110c3f5 (diff) | |
| parent | 1b50c829ef383705647d0c2df7c89e9051ec40fb (diff) | |
[MERGE] forward port branch saas-16 up to 1b50c829ef3
Diffstat (limited to 'addons/web/static/src/js/views/pivot')
| -rw-r--r-- | addons/web/static/src/js/views/pivot/pivot_controller.js | 34 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/pivot/pivot_model.js | 7 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/pivot/pivot_view.js | 11 |
3 files changed, 29 insertions, 23 deletions
diff --git a/addons/web/static/src/js/views/pivot/pivot_controller.js b/addons/web/static/src/js/views/pivot/pivot_controller.js index fb175aa1934..78640a97124 100644 --- a/addons/web/static/src/js/views/pivot/pivot_controller.js +++ b/addons/web/static/src/js/views/pivot/pivot_controller.js @@ -45,13 +45,15 @@ var PivotController = AbstractController.extend({ this.groupableFields = params.groupableFields; this.title = params.title; this.enableLinking = params.enableLinking; + // views to use in the action triggered when a data cell is clicked + this.views = params.views; this.lastHeaderSelected = null; }, /** * @override */ start: function () { - this.$el.toggleClass('o_enableLinking', this.enableLinking); + this.$el.toggleClass('o_enable_linking', this.enableLinking); this.$fieldSelection = this.$('.o_field_selection'); core.bus.on('click', this, function () { this.$fieldSelection.empty(); @@ -253,33 +255,23 @@ var PivotController = AbstractController.extend({ !this.enableLinking) { return; } - var row_id = $target.data('id'); - var col_id = $target.data('col_id'); var state = this.model.get(this.handle); - var row_domain = state.data.headers[row_id].domain; - var col_domain = state.data.headers[col_id].domain; - var context = _.omit(_.clone(state.context), 'group_by'); - - function _find_view_info (views, view_type) { - return _.find(views, function (view) { - return view[1] === view_type; - }) || [false, view_type]; - } - var views = [ - _find_view_info(this.options.action.views, "list"), - _find_view_info(this.options.action.views, "form"), - ]; + var colDomain = this.model.getHeader($target.data('col_id')).domain; + var rowDomain = this.model.getHeader($target.data('id')).domain; + var context = _.omit(state.context, function (val, key) { + return key === 'group_by' || _.str.startsWith(key, 'search_default_'); + }); this.do_action({ type: 'ir.actions.act_window', name: this.title, - res_model: this.model, - views: views, - view_type : "list", - view_mode : "list", + res_model: this.modelName, + views: this.views, + view_type: 'list', + view_mode: 'list', target: 'current', context: context, - domain: state.domain.concat(row_domain, col_domain), + domain: state.domain.concat(rowDomain, colDomain), }); }, /** 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 6bbadd56ed8..49c00663d47 100644 --- a/addons/web/static/src/js/views/pivot/pivot_model.js +++ b/addons/web/static/src/js/views/pivot/pivot_model.js @@ -16,9 +16,10 @@ odoo.define('web.PivotModel', function (require) { * @todo add a full description/specification of the data layout */ +var AbstractModel = require('web.AbstractModel'); var core = require('web.core'); +var session = require('web.session'); var utils = require('web.utils'); -var AbstractModel = require('web.AbstractModel'); var _t = core._t; @@ -189,6 +190,8 @@ var PivotModel = AbstractModel.extend({ } return { colGroupBys: this.data.main_col.groupbys, + context: this.data.context, + domain: this.data.domain, fields: this.fields, headers: !isRaw && this._computeHeaders(), has_data: true, @@ -225,7 +228,7 @@ var PivotModel = AbstractModel.extend({ this.modelName = params.modelName; this.data = { domain: params.domain, - context: params.context, + context: _.extend({}, session.user_context, params.context), groupedBy: params.rowGroupBys, colGroupBys: params.colGroupBys, measures: params.measures, diff --git a/addons/web/static/src/js/views/pivot/pivot_view.js b/addons/web/static/src/js/views/pivot/pivot_view.js index d90c0d21780..356672081d9 100644 --- a/addons/web/static/src/js/views/pivot/pivot_view.js +++ b/addons/web/static/src/js/views/pivot/pivot_view.js @@ -96,6 +96,17 @@ var PivotView = AbstractView.extend({ this.controllerParams.enableLinking = !arch.attrs.disable_linking; this.controllerParams.measures = measures; this.controllerParams.groupableFields = groupableFields; + // retrieve form and list view ids from the action to open those views + // when a data cell of the pivot view is clicked + this.controllerParams.views = [ + _findView(params.action && params.action.views, 'list'), + _findView(params.action && params.action.views, 'form'), + ]; + function _findView(views, viewType) { + return _.find(views, function (view) { + return view[1] === viewType; + }) || [false, viewType]; + } }, }); |
