diff --git a/addons/web/static/src/js/views/graph/graph_model.js b/addons/web/static/src/js/views/graph/graph_model.js
index 5948e07a54f..8a7f5da6d5d 100644
--- a/addons/web/static/src/js/views/graph/graph_model.js
+++ b/addons/web/static/src/js/views/graph/graph_model.js
@@ -60,12 +60,13 @@ return AbstractModel.extend({
this.modelName = params.modelName;
this.chart = {
data: [],
- groupedBy: params.groupBys,
+ groupedBy: params.groupedBy.length ? params.groupedBy : params.groupBys,
measure: params.measure,
mode: params.mode,
domain: params.domain,
context: params.context,
};
+ this.defaultGroupedBy = params.groupedBy;
return this._loadGraph();
},
/**
@@ -88,11 +89,7 @@ return AbstractModel.extend({
this.chart.domain = params.domain;
}
if ('groupBy' in params) {
- if (!params.groupBy.length) {
- this.chart.groupedBy = this.initialGroupBys;
- } else {
- this.chart.groupedBy = params.groupBy;
- }
+ this.chart.groupedBy = params.groupBy.length ? params.groupBy : this.defaultGroupedBy;
}
if ('measure' in params) {
this.chart.measure = params.measure;
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 49c00663d47..d74af7fee22 100644
--- a/addons/web/static/src/js/views/pivot/pivot_model.js
+++ b/addons/web/static/src/js/views/pivot/pivot_model.js
@@ -229,11 +229,12 @@ var PivotModel = AbstractModel.extend({
this.data = {
domain: params.domain,
context: _.extend({}, session.user_context, params.context),
- groupedBy: params.rowGroupBys,
+ groupedBy: params.groupedBy,
colGroupBys: params.colGroupBys,
measures: params.measures,
sorted_column: {},
};
+ this.defaultGroupedBy = params.groupedBy;
return this._loadData();
},
/**
@@ -250,7 +251,7 @@ var PivotModel = AbstractModel.extend({
this.data.domain = this.initialDomain;
}
if ('groupBy' in params) {
- this.data.groupedBy = params.groupBy;
+ this.data.groupedBy = params.groupBy.length ? params.groupBy : this.defaultGroupedBy;
}
if (!this.data.has_data) {
return this._loadData();
diff --git a/addons/web/static/tests/views/graph_tests.js b/addons/web/static/tests/views/graph_tests.js
index 7a7d22d96d6..33b2fd8ffbd 100644
--- a/addons/web/static/tests/views/graph_tests.js
+++ b/addons/web/static/tests/views/graph_tests.js
@@ -344,6 +344,34 @@ QUnit.module('Views', {
done();
});
});
+
+ QUnit.test('correctly use group_by key from the context', function (assert) {
+ var done = assert.async();
+ assert.expect(2);
+
+ var graph = createView({
+ View: GraphView,
+ model: 'foo',
+ data: this.data,
+ arch: '',
+ groupBy: ['color_id'],
+ viewOptions: {
+ context: {
+ graph_measure: 'foo',
+ graph_mode: 'line',
+ },
+ },
+ });
+ return concurrency.delay(0).then(function () {
+ assert.strictEqual(graph.$('text:contains(xphone)').length, 0,
+ 'should not contain a text element with product in legend');
+ assert.strictEqual(graph.$('text:contains(red)').length, 1,
+ 'should contain a text element with color in legend');
+ graph.destroy();
+ done();
+ });
+ });
+
});
});
diff --git a/addons/web/static/tests/views/pivot_tests.js b/addons/web/static/tests/views/pivot_tests.js
index c3acdb52399..267437845b0 100644
--- a/addons/web/static/tests/views/pivot_tests.js
+++ b/addons/web/static/tests/views/pivot_tests.js
@@ -825,4 +825,38 @@ QUnit.module('Views', {
pivot.destroy();
});
+ QUnit.test('correctly use group_by key from the context', function (assert) {
+ assert.expect(7);
+
+ var pivot = createView({
+ View: PivotView,
+ model: 'partner',
+ data: this.data,
+ arch: '' +
+ '' +
+ '' +
+ '',
+ groupBy: ['product_id'],
+ });
+
+ assert.strictEqual(pivot.$('thead .o_pivot_header_cell_opened').length, 1,
+ 'column: should have one opened header');
+ assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(First)').length, 1,
+ 'column: should display one closed header with "First"');
+ assert.strictEqual(pivot.$('thead .o_pivot_header_cell_closed:contains(Second)').length, 1,
+ 'column: should display one closed header with "Second"');
+
+ assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_opened').length, 1,
+ 'row: should have one opened header');
+ assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_closed:contains(xphone)').length, 1,
+ 'row: should display one closed header with "xphone"');
+ assert.strictEqual(pivot.$('tbody .o_pivot_header_cell_closed:contains(xpad)').length, 1,
+ 'row: should display one closed header with "xpad"');
+
+ assert.strictEqual(pivot.$('tbody tr:first td:nth(3)').text(), '32',
+ 'selected measure should be foo, with total 32');
+
+ pivot.destroy();
+ });
+
});});