[FIX] web: fix update problems in graph view

The graph view was not updated correctly with respect to
time range menu data. We fix that problem in this commit.
This commit is contained in:
Mathieu Duckerts-Antoine
2018-10-02 13:04:34 +02:00
parent 16469ec95b
commit 64d7da4198
3 changed files with 34 additions and 6 deletions
@@ -101,6 +101,17 @@ return AbstractModel.extend({
this.chart.groupedBy = params.context.graph_groupbys || this.chart.groupedBy;
this.chart.measure = params.context.graph_measure || this.chart.measure;
this.chart.mode = params.context.graph_mode || this.chart.mode;
var timeRangeMenuData = params.context.timeRangeMenuData;
if (timeRangeMenuData) {
this.chart.timeRange = timeRangeMenuData.timeRange || [];
this.chart.comparisonTimeRange = timeRangeMenuData.comparisonTimeRange || [];
this.chart.compare = this.chart.comparisonTimeRange.length > 0;
} else {
this.chart.timeRange = [];
this.chart.comparisonTimeRange = [];
this.chart.compare = false;
this.chart = _.omit(this.chart, 'comparisonData');
}
}
if ('domain' in params) {
this.chart.domain = params.domain;
@@ -68,6 +68,16 @@ return AbstractRenderer.extend({
this._super.apply(this, arguments);
this.isInDOM = false;
},
/**
* @override
* @param {Object} state
* @param {Object} params
*/
updateState: function (state, params) {
this.isComparison = !!state.comparisonData;
this.stacked = this.isComparison ? false : params.stacked;
return this._super.apply(this, arguments);
},
//--------------------------------------------------------------------------
// Private
@@ -723,6 +723,7 @@ QUnit.module('Search View', {
assert.expect(43);
var self = this;
var nbrReadGroup = 0;
var periodOptionText, periodOptionValue;
var unpatchDate = patchDate(2017, 2, 22, 1, 0, 0);
@@ -733,14 +734,20 @@ QUnit.module('Search View', {
data: this.data,
mockRPC: function (route, args) {
if (route === '/web/dataset/call_kw/partner/read_group') {
nbrReadGroup++;
var timeRangeMenuData = args.kwargs.context.timeRangeMenuData;
if (timeRangeMenuData) {
assert.deepEqual(timeRangeMenuData.timeRange,
self.periodDomains.shift(),
"time range domain for " + periodOptionText);
assert.deepEqual(timeRangeMenuData.comparisonTimeRange,
self.previousPeriodDomains.shift(),
"comparaison time range domain for " + periodOptionText);
// nbrReadGroup % 2 === 0 is true when the read group is for data, false
// for comparison data
if (nbrReadGroup % 2 === 0) {
assert.deepEqual(timeRangeMenuData.timeRange,
self.periodDomains.shift(),
"time range domain for " + periodOptionText);
} else {
assert.deepEqual(timeRangeMenuData.comparisonTimeRange,
self.previousPeriodDomains.shift(),
"comparaison time range domain for " + periodOptionText);
}
}
}
return this._super.apply(this, arguments);