diff --git a/superset/assets/src/explore/components/controls/MetricsControl.jsx b/superset/assets/src/explore/components/controls/MetricsControl.jsx index e93f6c18794c5..c159e8ea70a47 100644 --- a/superset/assets/src/explore/components/controls/MetricsControl.jsx +++ b/superset/assets/src/explore/components/controls/MetricsControl.jsx @@ -27,11 +27,13 @@ const propTypes = { columns: PropTypes.arrayOf(columnType), savedMetrics: PropTypes.arrayOf(savedMetricType), multi: PropTypes.bool, + clearable: PropTypes.bool, datasourceType: PropTypes.string, }; const defaultProps = { onChange: () => {}, + clearable: true, }; function isDictionaryForAdhocMetric(value) { @@ -244,7 +246,7 @@ export default class MetricsControl extends React.PureComponent { value={this.props.multi ? this.state.value : this.state.value[0]} labelKey="label" valueKey="optionName" - clearable + clearable={this.props.clearable} closeOnSelect onChange={this.onChange} optionRenderer={this.optionRenderer} diff --git a/superset/assets/src/explore/visTypes.js b/superset/assets/src/explore/visTypes.js index b0037ec5f496c..e276bafd2b64c 100644 --- a/superset/assets/src/explore/visTypes.js +++ b/superset/assets/src/explore/visTypes.js @@ -329,6 +329,9 @@ export const visTypes = { choices: D3_TIME_FORMAT_OPTIONS, default: 'smart_date', }, + metric: { + clearable: false, + }, }, }, diff --git a/superset/viz.py b/superset/viz.py index daf41645eca76..6d8e0946de811 100644 --- a/superset/viz.py +++ b/superset/viz.py @@ -1143,12 +1143,12 @@ def process_data(self, df, aggregate=False): df = df.pivot_table( index=DTTM_ALIAS, columns=fd.get('groupby'), - values=utils.get_metric_names(fd.get('metrics'))) + values=self.metric_labels) else: df = df.pivot_table( index=DTTM_ALIAS, columns=fd.get('groupby'), - values=utils.get_metric_names(fd.get('metrics')), + values=self.metric_labels, fill_value=0, aggfunc=sum)