Skip to content
Snippets Groups Projects
Commit e7678062 authored by Tom Robinson's avatar Tom Robinson
Browse files

Add updateSettings function which removed undefined settings and includes...

Add updateSettings function which removed undefined settings and includes analytics tracking. Use for both nested and top level settings
parent 7437c750
Branches
Tags
No related merge requests found
......@@ -17,6 +17,7 @@ import {
getVisualizationTransformed,
extractRemappings,
} from "metabase/visualizations";
import { updateSettings } from "metabase/visualizations/lib/settings";
const DEFAULT_TAB_PRIORITY = ["Display"];
......@@ -63,23 +64,11 @@ class ChartSettings extends Component {
});
};
handleChangeSettings = newSettings => {
for (const key of Object.keys(newSettings)) {
MetabaseAnalytics.trackEvent("Chart Settings", "Change Setting", key);
}
const settings = {
...this.state.settings,
...newSettings,
};
// remove undefined settings
for (const [key, value] of Object.entries(newSettings)) {
if (value === undefined) {
delete settings[key];
}
}
handleChangeSettings = changedSettings => {
const newSettings = updateSettings(this.state.settings, changedSettings);
this.setState({
settings: settings,
series: this._getSeries(this.props.series, settings),
settings: newSettings,
series: this._getSeries(this.props.series, newSettings),
});
};
......
......@@ -6,6 +6,8 @@ import ChartSettingsWidget from "../ChartSettingsWidget";
import _ from "underscore";
import { updateSettings } from "metabase/visualizations/lib/settings";
import type {
Settings,
ExtraProps,
......@@ -114,17 +116,15 @@ const chartSettingNestedSettings = ({
handleChangeSettingsForObjectKey = (
objectKey: NestedObjectKey,
newSettings: Settings,
changedSettings: Settings,
) => {
const { onChange } = this.props;
const objectsSettings = this.props.value || {};
const objectSettings = objectsSettings[objectKey] || {};
const newSettings = updateSettings(objectSettings, changedSettings);
onChange({
...objectsSettings,
[objectKey]: {
...objectSettings,
...newSettings,
},
[objectKey]: newSettings,
});
};
......
......@@ -12,6 +12,8 @@ import ChartSettingFieldsPicker from "metabase/visualizations/components/setting
import ChartSettingColorPicker from "metabase/visualizations/components/settings/ChartSettingColorPicker.jsx";
import ChartSettingColorsPicker from "metabase/visualizations/components/settings/ChartSettingColorsPicker.jsx";
import MetabaseAnalytics from "metabase/lib/analytics";
export type SettingId = string;
export type Settings = {
......@@ -239,3 +241,23 @@ export function getPersistableDefaultSettings(
}
return persistableDefaultSettings;
}
export function updateSettings(
storedSettings: Settings,
changedSettings: Settings,
): Settings {
for (const key of Object.keys(changedSettings)) {
MetabaseAnalytics.trackEvent("Chart Settings", "Change Setting", key);
}
const newSettings = {
...storedSettings,
...changedSettings,
};
// remove undefined settings
for (const [key, value] of Object.entries(changedSettings)) {
if (value === undefined) {
delete newSettings[key];
}
}
return newSettings;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment