Skip to content

Commit

Permalink
fix static combo chart crashes when viz settings are invalid (#42669)
Browse files Browse the repository at this point in the history
* fix static combo chart crashes when viz settings are invalid

* spec
  • Loading branch information
alxnddr committed May 14, 2024
1 parent f401054 commit e9f3f49
Show file tree
Hide file tree
Showing 7 changed files with 678 additions and 48 deletions.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -633,6 +633,13 @@ LineReplaceMissingValuesZero.args = {
renderingContext,
};

export const LineChartBrokenDimensionsMetricsSettings = Template.bind({});
LineChartBrokenDimensionsMetricsSettings.args = {
rawSeries: data.lineChartBrokenDimensionsMetricsSettings as any,
dashcardSettings: {},
renderingContext,
};

export const Default = Template.bind({});
Default.args = {
rawSeries: data.messedUpAxis as any,
Expand Down
34 changes: 34 additions & 0 deletions frontend/src/metabase/static-viz/components/ComboChart/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,19 @@ import {
} from "metabase/visualizations/echarts/cartesian/model/series";
import type { LegacySeriesSettingsObjectKey } from "metabase/visualizations/echarts/cartesian/model/types";
import {
getAreDimensionsAndMetricsValid,
getDefaultBubbleSizeCol,
getDefaultDataLabelsFrequency,
getDefaultDimensionFilter,
getDefaultDimensions,
getDefaultGoalLabel,
getDefaultIsAutoSplitEnabled,
getDefaultIsHistogram,
getDefaultIsNumeric,
getDefaultIsTimeSeries,
getDefaultLegendIsReversed,
getDefaultMetricFilter,
getDefaultMetrics,
getDefaultShowDataLabels,
getDefaultStackDisplayValue,
getDefaultStackingValue,
Expand Down Expand Up @@ -125,6 +130,35 @@ export const computeStaticComboChartSettings = (
const { card: mainCard, data: mainDataset } = rawSeries[0];
const settings = getCommonStaticVizSettings(rawSeries, dashcardSettings);

fillWithDefaultValue(
settings,
"graph._dimension_filter",
getDefaultDimensionFilter(mainCard.display),
);
fillWithDefaultValue(
settings,
"graph._metric_filter",
getDefaultMetricFilter(mainCard.display),
);

const areDimensionsAndMetricsValid = getAreDimensionsAndMetricsValid(
rawSeries,
settings,
);

fillWithDefaultValue(
settings,
"graph.dimensions",
getDefaultDimensions(rawSeries, settings),
areDimensionsAndMetricsValid,
);
fillWithDefaultValue(
settings,
"graph.metrics",
getDefaultMetrics(rawSeries),
areDimensionsAndMetricsValid,
);

const cardsColumns = getCardsColumns(rawSeries, settings);
const dimensionModel = getDimensionModel(rawSeries, cardsColumns);
const seriesModels = getCardsSeriesModels(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ import histogramTicks45Degrees from "./histogram-ticks-45-degrees.json";
import histogramTicks90Degrees from "./histogram-ticks-90-degrees.json";
import imageCutOff37275 from "./image-cut-off-37275.json";
import incorrectLabelYAxisSplit41285 from "./incorrect-label-y-axis-split-41285.json";
import lineChartBrokenDimensionsMetricsSettings from "./line-chart-broken-dimensions-metrics-settings.json";
import lineCustomYAxisRangeEqualsExtents from "./line-custom-y-axis-range-equals-extents.json";
import lineFullyNullDimension37902 from "./line-fully-null-dimension-37902.json";
import lineLinearXScaleUnsorted from "./line-linear-x-scale-unsorted.json";
Expand Down Expand Up @@ -174,4 +175,5 @@ export const data = {
lineUnpinFromZero,
lineSettings,
lineReplaceMissingValuesZero,
lineChartBrokenDimensionsMetricsSettings,
};

0 comments on commit e9f3f49

Please sign in to comment.