From 61311c13156c5feabcf3d55f6d6fa3bb0773fbc4 Mon Sep 17 00:00:00 2001 From: michellethomas Date: Thu, 31 May 2018 13:53:26 -0700 Subject: [PATCH] Fixing time table viz for adhoc metrics (#5117) --- .../assets/src/components/MetricOption.jsx | 2 +- .../assets/src/visualizations/time_table.jsx | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/superset/assets/src/components/MetricOption.jsx b/superset/assets/src/components/MetricOption.jsx index 81838f0d0a6ce..77596ea0aafa1 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 bcf2f0dca03cb..a00aa36b99c37 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;