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 2aa4cd93797..f53e0f9db7c 100644 --- a/addons/web/static/src/js/views/pivot/pivot_controller.js +++ b/addons/web/static/src/js/views/pivot/pivot_controller.js @@ -171,11 +171,13 @@ var PivotController = AbstractController.extend({ */ _update: function (state) { this._updateButtons(); - var hasNoContent = !state.measures.length || !state.has_data; + var hasNoContent = !state.has_data || !state.measures.length; if (hasNoContent) { - this.renderer.$el.detach(); - this.$el.append(QWeb.render('PivotView.nodata')); + if (!this.$('.oe_view_nocontent').length) { + this.renderer.$el.detach(); + this.$el.append(QWeb.render('PivotView.nodata')); + } } else { if (!document.contains(this.renderer.el)) { this.$('div.oe_view_nocontent').remove(); 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 d2bf632053c..d5b226b27da 100644 --- a/addons/web/static/src/js/views/pivot/pivot_model.js +++ b/addons/web/static/src/js/views/pivot/pivot_model.js @@ -186,11 +186,14 @@ var PivotModel = AbstractModel.extend({ */ get: function (options) { var isRaw = options && options.raw; + if (!this.data.has_data) { + return {has_data: false}; + } return { colGroupBys: this.data.main_col.groupbys, fields: this.fields, - has_data: this.data.has_data, headers: !isRaw && this._computeHeaders(), + has_data: true, mainColWidth: this.data.main_col.width, measures: this.data.measures, rows: !isRaw && this._computeRows(), @@ -243,8 +246,6 @@ var PivotModel = AbstractModel.extend({ */ reload: function (handle, params) { var self = this; - var old_row_root = this.data.main_row.root; - var old_col_root = this.data.main_col.root; if ('domain' in params) { this.data.domain = params.domain; } else { @@ -253,7 +254,12 @@ var PivotModel = AbstractModel.extend({ if ('groupBy' in params) { this.data.groupedBy = params.groupBy; } + if (!this.data.has_data) { + return this._loadData(params); + } + var old_row_root = this.data.main_row.root; + var old_col_root = this.data.main_col.root; return this._loadData(params).then(function () { var new_groupby_length; if (!('groupBy' in params)) { diff --git a/addons/web/static/src/js/views/pivot/pivot_renderer.js b/addons/web/static/src/js/views/pivot/pivot_renderer.js index c6ab6b3125a..c38f8b6b768 100644 --- a/addons/web/static/src/js/views/pivot/pivot_renderer.js +++ b/addons/web/static/src/js/views/pivot/pivot_renderer.js @@ -18,6 +18,9 @@ var PivotRenderer = AbstractRenderer.extend({ * @returns {Deferred} */ _render: function () { + if (!this.state.has_data) { + return this._super.apply(this, arguments); + } var $fragment = $(document.createDocumentFragment()); var $table = $('