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(); + }); + });});