From 2c28ee7c2434dbf743022dd15bdc7a7ef684055d Mon Sep 17 00:00:00 2001 From: Maxime Beauchemin Date: Wed, 4 Oct 2017 16:51:40 -0700 Subject: [PATCH] [time_table] adding support for URLs / links Using Mustache templating and providing {{ metric }} as well as {{ ...formData }} as context. --- superset/assets/javascripts/components/MetricOption.jsx | 9 +++++---- superset/assets/javascripts/explore/stores/visTypes.js | 6 ++++++ superset/assets/visualizations/time_table.jsx | 8 ++++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/superset/assets/javascripts/components/MetricOption.jsx b/superset/assets/javascripts/components/MetricOption.jsx index f0994142569b..d952b06aec6e 100644 --- a/superset/assets/javascripts/components/MetricOption.jsx +++ b/superset/assets/javascripts/components/MetricOption.jsx @@ -6,17 +6,18 @@ import InfoTooltipWithTrigger from './InfoTooltipWithTrigger'; const propTypes = { metric: PropTypes.object.isRequired, showFormula: PropTypes.bool, + url: PropTypes.string, }; const defaultProps = { showFormula: true, }; -export default function MetricOption({ metric, showFormula }) { +export default function MetricOption({ metric, showFormula, url }) { + const verbose = metric.verbose_name || metric.metric_name; + const link = url ? {verbose} : verbose; return (
- - {metric.verbose_name || metric.metric_name} - + {link} {metric.description && { let leftCell; + const context = Object.assign({}, fd, { metric }); + const url = fd.url ? Mustache.render(fd.url, context) : null; + if (!payload.data.is_group_by) { - leftCell = ; + leftCell = ; } else { - leftCell = metric; + leftCell = url ? {metric} : metric; } const row = { metric: leftCell }; fd.column_collection.forEach((c) => {