diff --git a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx index 6f2c657a485ff..31bddf87dd686 100644 --- a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx +++ b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx @@ -85,6 +85,14 @@ describe('MetricsControl', () => { ]); }); + it('does not show aggregates in options if no columns', () => { + const { wrapper } = setup({ columns: [] }); + expect(wrapper.state('options')).toEqual([ + { optionName: 'sum__value', metric_name: 'sum__value', expression: 'SUM(energy_usage.value)' }, + { optionName: 'avg__value', metric_name: 'avg__value', expression: 'AVG(energy_usage.value)' }, + ]); + }); + it('coerces Adhoc Metrics from form data into instances of the AdhocMetric class and leaves saved metrics', () => { const { wrapper } = setup({ value: [ diff --git a/superset/assets/src/explore/components/controls/MetricsControl.jsx b/superset/assets/src/explore/components/controls/MetricsControl.jsx index b42cc814d67b6..1e49355e3d841 100644 --- a/superset/assets/src/explore/components/controls/MetricsControl.jsx +++ b/superset/assets/src/explore/components/controls/MetricsControl.jsx @@ -238,10 +238,14 @@ export default class MetricsControl extends React.PureComponent { } optionsForSelect(props) { + const { columns, savedMetrics } = props; + const aggregates = columns && columns.length ? + Object.keys(AGGREGATES).map(aggregate => ({ aggregate_name: aggregate })) : + []; const options = [ - ...props.columns, - ...Object.keys(AGGREGATES).map(aggregate => ({ aggregate_name: aggregate })), - ...props.savedMetrics, + ...columns, + ...aggregates, + ...savedMetrics, ]; return options.reduce((results, option) => {