diff --git a/superset/assets/src/components/MetricOption.jsx b/superset/assets/src/components/MetricOption.jsx
index 81838f0d0..77596ea0a 100644
--- a/superset/assets/src/components/MetricOption.jsx
+++ b/superset/assets/src/components/MetricOption.jsx
@@ -17,7 +17,7 @@ const defaultProps = {
};
export default function MetricOption({ metric, openInNewWindow, showFormula, showType, url }) {
- const verbose = metric.verbose_name || metric.metric_name;
+ const verbose = metric.verbose_name || metric.metric_name || metric.label;
const link = url ? {verbose} : verbose;
return (
diff --git a/superset/assets/src/visualizations/time_table.jsx b/superset/assets/src/visualizations/time_table.jsx
index bcf2f0dca..a00aa36b9 100644
--- a/superset/assets/src/visualizations/time_table.jsx
+++ b/superset/assets/src/visualizations/time_table.jsx
@@ -64,26 +64,28 @@ function viz(slice, payload) {
let leftCell;
const context = { ...fd, metric };
const url = fd.url ? Mustache.render(fd.url, context) : null;
+ const metricLabel = metric.label || metric;
+ const metricData = typeof metric === 'object' ? metric : metricMap[metric];
if (!payload.data.is_group_by) {
leftCell = (
-
+
);
} else {
- leftCell = url ?
{metric} : metric;
+ leftCell = url ?
{metricLabel} : metric;
}
const row = { metric: leftCell };
fd.column_collection.forEach((column) => {
if (column.colType === 'spark') {
let sparkData;
if (!column.timeRatio) {
- sparkData = data.map(d => d[metric]);
+ sparkData = data.map(d => d[metricLabel]);
} else {
// Period ratio sparkline
sparkData = [];
for (let i = column.timeRatio; i < data.length; i++) {
- const prevData = data[i - column.timeRatio][metric];
+ const prevData = data[i - column.timeRatio][metricLabel];
if (prevData && prevData !== 0) {
- sparkData.push(data[i][metric] / prevData);
+ sparkData.push(data[i][metricLabel] / prevData);
} else {
sparkData.push(null);
}
@@ -105,7 +107,7 @@ function viz(slice, payload) {
>
{({ onMouseLeave, onMouseMove, tooltipData }) => (
totalLag) {
errorMsg = `The time lag set at ${timeLag} exceeds the length of data at ${reversedData.length}. No data available.`;
} else {
- v = reversedData[timeLag][metric];
+ v = reversedData[timeLag][metricLabel];
}
if (column.comparisonType === 'diff') {
v = recent - v;
@@ -162,7 +164,7 @@ function viz(slice, payload) {
} else if (column.colType === 'avg') {
// Average over the last {timeLag}
v = reversedData
- .map((k, i) => i < column.timeLag ? k[metric] : 0)
+ .map((k, i) => i < column.timeLag ? k[metricLabel] : 0)
.reduce((a, b) => a + b) / column.timeLag;
}
let color;