diff --git a/addons/spreadsheet/static/src/chart/odoo_chart/index.js b/addons/spreadsheet/static/src/chart/odoo_chart/index.js index 0c41270f362..7a09e5ef68a 100644 --- a/addons/spreadsheet/static/src/chart/odoo_chart/index.js +++ b/addons/spreadsheet/static/src/chart/odoo_chart/index.js @@ -4,7 +4,11 @@ import spreadsheet from "@spreadsheet/o_spreadsheet/o_spreadsheet_extended"; const { chartComponentRegistry } = spreadsheet.registries; const { ChartJsComponent } = spreadsheet.components; +const { invalidateEvaluationCommands, readonlyAllowedCommands } = spreadsheet; chartComponentRegistry.add("odoo_bar", ChartJsComponent); chartComponentRegistry.add("odoo_line", ChartJsComponent); chartComponentRegistry.add("odoo_pie", ChartJsComponent); + +invalidateEvaluationCommands.add("ADD_GRAPH_DOMAIN"); +readonlyAllowedCommands.add("ADD_GRAPH_DOMAIN"); diff --git a/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js b/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js index f928b92a5b7..51067a51695 100644 --- a/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js +++ b/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js @@ -1,7 +1,7 @@ /** @odoo-module */ import { createSpreadsheetWithGraph } from "../utils/chart"; -import { addGlobalFilter } from "../utils/commands"; +import { addGlobalFilter, setGlobalFilterValue } from "../utils/commands"; async function addChartGlobalFilter(model) { const chartId = model.getters.getChartIds(model.getters.getActiveSheetId())[0]; @@ -42,4 +42,28 @@ QUnit.module("spreadsheet > Global filters chart", {}, () => { }); await addChartGlobalFilter(model); }); + + QUnit.test("Chart is impacted by global filter in dashboard mode", async function (assert) { + const { model } = await createSpreadsheetWithGraph(); + assert.equal(model.getters.getGlobalFilters().length, 0); + const chartId = model.getters.getChartIds(model.getters.getActiveSheetId())[0]; + const filter = { + id: "42", + type: "date", + label: "Last Year", + rangeType: "year", + graphFields: { [chartId]: { field: "date", type: "date" } }, + }; + await addGlobalFilter(model, { filter }); + model.updateMode("dashboard"); + let computedDomain = model.getters.getGraphDataSource(chartId).getComputedDomain(); + assert.equal(computedDomain.length, 0); + await setGlobalFilterValue(model, { + id: "42", + value: { yearOffset: -1 }, + }); + computedDomain = model.getters.getGraphDataSource(chartId).getComputedDomain(); + assert.equal(computedDomain.length, 3); + assert.equal(computedDomain[0], "&"); + }); });