From c743df7d01f8494000ae92231065b65ea5e5beef Mon Sep 17 00:00:00 2001 From: Carlos Roca Date: Tue, 9 May 2023 08:31:42 +0200 Subject: [PATCH] [FIX] web_pivot_computed_measure: Error when using filter created with favorites --- web_pivot_computed_measure/__manifest__.py | 2 +- .../static/src/pivot/pivot_model.esm.js | 44 ++++++++++++++++++- .../static/src/pivot/pivot_view.esm.js | 20 +++++++++ 3 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 web_pivot_computed_measure/static/src/pivot/pivot_view.esm.js diff --git a/web_pivot_computed_measure/__manifest__.py b/web_pivot_computed_measure/__manifest__.py index c6d618203..d18096526 100644 --- a/web_pivot_computed_measure/__manifest__.py +++ b/web_pivot_computed_measure/__manifest__.py @@ -3,7 +3,7 @@ { "name": "Web Pivot Computed Measure", "category": "web", - "version": "15.0.1.0.0", + "version": "15.0.1.0.1", "author": "Tecnativa, Odoo Community Association (OCA)", "license": "AGPL-3", "website": "https://github.com/OCA/web", diff --git a/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js b/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js index f6833784d..d067b2d76 100644 --- a/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js +++ b/web_pivot_computed_measure/static/src/pivot/pivot_model.esm.js @@ -135,7 +135,7 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", { */ _fillComputedMeasuresData(subGroupData) { for (const cm of this._computed_measures) { - if (!this._isMeasureEnabled(cm.id)) return; + if (!this._isMeasureEnabled(cm.id)) continue; if (subGroupData.__count === 0) { subGroupData[cm.id] = false; } else { @@ -235,4 +235,46 @@ patch(PivotModel.prototype, "web_pivot_computed_measure.PivotModel", { } return this._super(...arguments); }, + /** + * Load the measures added to selected favorite filters + * + * @override + */ + async load(searchParams) { + var _super = this._super.bind(this); + if ("context" in searchParams) { + this._computed_measures = + searchParams.context.pivot_computed_measures || + searchParams.computed_measures || + []; + } + for (const cmDef of this._computed_measures) { + if (this._isMeasureEnabled(cmDef.id)) { + continue; + } + await this._createVirtualMeasure(cmDef); + } + const fieldNames = Object.keys(this.metaData.fields); + for (const fieldName of fieldNames) { + const field = this.metaData.fields[fieldName]; + if (field.__computed_id) { + const cm = _.find(this._computed_measures, { + id: field.__computed_id, + }); + if (!cm) { + delete this.metaData.fields[fieldName]; + delete this.metaData.measures[fieldName]; + this.metaData.activeMeasures = _.without( + this.metaData.activeMeasures, + fieldName + ); + const config = {metaData: this.metaData, data: this.data}; + this._loadData(config).then(() => { + this.notify(); + }); + } + } + } + return _super(...arguments); + }, }); diff --git a/web_pivot_computed_measure/static/src/pivot/pivot_view.esm.js b/web_pivot_computed_measure/static/src/pivot/pivot_view.esm.js new file mode 100644 index 000000000..5242dbe11 --- /dev/null +++ b/web_pivot_computed_measure/static/src/pivot/pivot_view.esm.js @@ -0,0 +1,20 @@ +/** @odoo-module **/ +/* Copyright 2022 Tecnativa - Carlos Roca + * License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html) */ + +import {PivotView} from "@web/views/pivot/pivot_view"; +import {patch} from "web.utils"; + +patch(PivotView.prototype, "web_pivot_computed_measure.PivotView", { + /** + * Add computed_measures to context key to avoid loosing info when saving the + * filter to favorites. + * + * @override + */ + getContext() { + var res = this._super(...arguments); + res.pivot_computed_measures = this.model._computed_measures; + return res; + }, +});