summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/views/pivot
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2017-06-15 18:46:47 +0200
committerChristophe Simonis <chs@odoo.com>2017-06-15 18:46:47 +0200
commited2ddeccdfaac46acb4d4bfbdac5f1b570f0829c (patch)
tree5d0c41f089c8deddd753a7ec61217ee33d007451 /addons/web/static/src/js/views/pivot
parent156e07f6387b3e2b8915b1bd8624195d7110c3f5 (diff)
parent1b50c829ef383705647d0c2df7c89e9051ec40fb (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.js34
-rw-r--r--addons/web/static/src/js/views/pivot/pivot_model.js7
-rw-r--r--addons/web/static/src/js/views/pivot/pivot_view.js11
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];
+ }
},
});