diff --git a/frontend/src/metabase/visualizations/lib/renderer_utils.js b/frontend/src/metabase/visualizations/lib/renderer_utils.js index 53f4d0b28fc46532133d985bc8b90d9810b549a7..13a808f3c926f19e696becf0d32136bd2dcd08b7 100644 --- a/frontend/src/metabase/visualizations/lib/renderer_utils.js +++ b/frontend/src/metabase/visualizations/lib/renderer_utils.js @@ -132,10 +132,8 @@ export const isOrdinal = settings => export const isHistogramBar = ({ settings, chartType }) => isHistogram(settings) && chartType === "bar"; -export const isStacked = (settings, datas) => - settings["stackable.stack_type"] && datas.length > 1; +export const isStacked = (settings, datas) => settings["stackable.stack_type"]; export const isNormalized = (settings, datas) => - isStacked(settings, datas) && settings["stackable.stack_type"] === "normalized"; // find the first nonempty single series diff --git a/frontend/src/metabase/visualizations/lib/settings/graph.js b/frontend/src/metabase/visualizations/lib/settings/graph.js index 852718c2e6bc52637f5c0933f5bd02d9ce72a4d5..6264d8ad858828bbf3320119eee55c5310134221 100644 --- a/frontend/src/metabase/visualizations/lib/settings/graph.js +++ b/frontend/src/metabase/visualizations/lib/settings/graph.js @@ -273,9 +273,6 @@ export const STACKABLE_SETTINGS = { ? "stacked" : null, getHidden: (series, settings) => { - if (series.length < 2) { - return true; - } const displays = series.map(single => settings.series(single).display); return !_.any(displays, display => STACKABLE_DISPLAY_TYPES.has(display)); }, diff --git a/frontend/test/metabase/visualizations/components/LineAreaBarRenderer-bar.unit.spec.js b/frontend/test/metabase/visualizations/components/LineAreaBarRenderer-bar.unit.spec.js index 8b6e15c12d36075f7109687b71c3bf6b08cb0d38..58b8e070e9b390463a27dadc68c5d09185a78a4b 100644 --- a/frontend/test/metabase/visualizations/components/LineAreaBarRenderer-bar.unit.spec.js +++ b/frontend/test/metabase/visualizations/components/LineAreaBarRenderer-bar.unit.spec.js @@ -27,7 +27,7 @@ const DEFAULT_COLUMN_SETTINGS = { date_style: "MMMM D, YYYY", }; -function MainSeries(chartType, settings = {}) { +function MainSeries(chartType, settings = {}, value = 1) { return { card: { display: chartType, @@ -41,7 +41,7 @@ function MainSeries(chartType, settings = {}) { StringColumn({ display_name: "Category", source: "breakout" }), NumberColumn({ display_name: "Sum", source: "aggregation" }), ], - rows: [["A", 1]], + rows: [["A", value]], }, }; } @@ -159,6 +159,23 @@ describe("LineAreaBarRenderer-bar", () => { ]); }); + it(`should render an bar normalized chart with just one series`, () => { + const onHoverChange = jest.fn(); + renderLineAreaBar( + element, + [MainSeries("bar", { "stackable.stack_type": "normalized" }, 3)], + { onHoverChange }, + ); + + dispatchUIEvent(qsa(".bar, .dot")[0], "mousemove"); + + const { calls } = onHoverChange.mock; + expect(getDataKeyValues(calls[0][0])).toEqual([ + { key: "Category", value: "A" }, + { key: "% Sum", value: "100%" }, + ]); + }); + it("should replace the aggregation name with the series name", () => { const onHoverChange = jest.fn(); renderLineAreaBar(