diff --git a/src/helpers/figures/charts/runtime/chartjs_dataset.ts b/src/helpers/figures/charts/runtime/chartjs_dataset.ts index 0090b54937..d92d66bc06 100644 --- a/src/helpers/figures/charts/runtime/chartjs_dataset.ts +++ b/src/helpers/figures/charts/runtime/chartjs_dataset.ts @@ -692,6 +692,9 @@ function getTreeMapGroupColors( } function getTreeMapColorScale(tree: SunburstTreeNode[], coloringOption: TreeMapColorScaleOptions) { + if (tree.length === 0) { + return undefined; + } const treeNodesByLevel = pyramidizeTree(tree); const nodes = treeNodesByLevel[treeNodesByLevel.length - 1]; const minValue = Math.min(...nodes.map((node) => node.value)); diff --git a/tests/figures/chart/treemap/treemap_chart_plugin.test.ts b/tests/figures/chart/treemap/treemap_chart_plugin.test.ts index e50678c94f..6b1d457525 100644 --- a/tests/figures/chart/treemap/treemap_chart_plugin.test.ts +++ b/tests/figures/chart/treemap/treemap_chart_plugin.test.ts @@ -5,6 +5,7 @@ import { TreeMapChartRuntime } from "../../../../src/types/chart/tree_map_chart" import { createSunburstChart, createTreeMapChart, + hideColumns, setCellContent, setFormat, updateChart, @@ -431,6 +432,28 @@ describe("TreeMap chart", () => { ); }); + test("TreeMap color scale with no visible data", () => { + const grid = { + A1: "Year", + B1: "2025", + }; + setGrid(model, grid); + const chartId = createTreeMapChart(model, { + dataSets: [{ dataRange: "A1" }], + labelRange: "B1", + dataSetsHaveTitle: false, + coloringOptions: { + type: "colorScale", + minColor: "#112233", + midColor: "#445566", + maxColor: "#778899", + }, + }); + expect(getTreeMapDatasetConfig(chartId).tree).toHaveLength(1); + hideColumns(model, ["B"]); + expect(getTreeMapDatasetConfig(chartId).tree).toHaveLength(0); + }); + test("TreeMap category colors with single level", () => { // prettier-ignore const grid = {