From b1c67719c61400d199b4772dda61c382c73e3aa4 Mon Sep 17 00:00:00 2001 From: Grace Guo Date: Mon, 18 Jun 2018 15:31:34 -0700 Subject: [PATCH] [Explore] Handle empty metrics control data --- .../components/controls/AdhocFilterControl.jsx | 14 +++++++------- .../explore/components/controls/MetricsControl.jsx | 13 ++++++------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/superset/assets/src/explore/components/controls/AdhocFilterControl.jsx b/superset/assets/src/explore/components/controls/AdhocFilterControl.jsx index 3a12c2a7b3dac..1e88383359637 100644 --- a/superset/assets/src/explore/components/controls/AdhocFilterControl.jsx +++ b/superset/assets/src/explore/components/controls/AdhocFilterControl.jsx @@ -215,17 +215,17 @@ export default class AdhocFilterControl extends React.Component { )), ].filter(option => option); - return options.map((option) => { + return options.reduce((results, option) => { if (option.saved_metric_name) { - return { ...option, filterOptionName: option.saved_metric_name }; + results.push({ ...option, filterOptionName: option.saved_metric_name }); } else if (option.column_name) { - return { ...option, filterOptionName: '_col_' + option.column_name }; + results.push({ ...option, filterOptionName: '_col_' + option.column_name }); } else if (option instanceof AdhocMetric) { - return { ...option, filterOptionName: '_adhocmetric_' + option.label }; + results.push({ ...option, filterOptionName: '_adhocmetric_' + option.label }); } - return null; - }).sort((a, b) => ( - (a.saved_metric_name || a.column_name || a.label || '').localeCompare(( + return results; + }, []).sort((a, b) => ( + (a.saved_metric_name || a.column_name || a.label).localeCompare(( b.saved_metric_name || b.column_name || b.label )) )); diff --git a/superset/assets/src/explore/components/controls/MetricsControl.jsx b/superset/assets/src/explore/components/controls/MetricsControl.jsx index d195cdb1ae6e7..e93f6c18794c5 100644 --- a/superset/assets/src/explore/components/controls/MetricsControl.jsx +++ b/superset/assets/src/explore/components/controls/MetricsControl.jsx @@ -193,17 +193,16 @@ export default class MetricsControl extends React.PureComponent { ...props.savedMetrics, ]; - return options.map((option) => { + return options.reduce((results, option) => { if (option.metric_name) { - return { ...option, optionName: option.metric_name }; + results.push({ ...option, optionName: option.metric_name }); } else if (option.column_name) { - return { ...option, optionName: '_col_' + option.column_name }; + results.push({ ...option, optionName: '_col_' + option.column_name }); } else if (option.aggregate_name) { - return { ...option, optionName: '_aggregate_' + option.aggregate_name }; + results.push({ ...option, optionName: '_aggregate_' + option.aggregate_name }); } - notify.error(`provided invalid option to MetricsControl, ${option}`); - return null; - }); + return results; + }, []); } isAutoGeneratedMetric(savedMetric) {