diff --git a/superset/assets/visualizations/time_table.jsx b/superset/assets/visualizations/time_table.jsx index f318b00f25ac0..38f193b947b09 100644 --- a/superset/assets/visualizations/time_table.jsx +++ b/superset/assets/visualizations/time_table.jsx @@ -1,7 +1,7 @@ import ReactDOM from 'react-dom'; import React from 'react'; import propTypes from 'prop-types'; -import { Table, Thead, Th } from 'reactable'; +import { Table, Thead, Th, Tr, Td } from 'reactable'; import d3 from 'd3'; import { Sparkline, LineSeries } from '@data-ui/sparkline'; import Mustache from 'mustache'; @@ -44,16 +44,8 @@ function viz(slice, payload) { metricMap[m.metric_name] = m; }); - let metrics; - if (payload.data.is_group_by) { - // Sorting by first column desc - metrics = payload.data.columns.sort((m1, m2) => ( - reversedData[0][m1] > reversedData[0][m2] ? -1 : 1 - )); - } else { - // Using ordering specified in Metrics dropdown - metrics = payload.data.columns; - } + const metrics = payload.data.columns; + const defaultSort = { column: fd.column_collection[0].key, direction: 'desc' }; const tableData = metrics.map((metric) => { let leftCell; const context = Object.assign({}, fd, { metric }); @@ -80,28 +72,31 @@ function viz(slice, payload) { const extent = d3.extent(sparkData); const tooltip = `min: ${d3format(c.d3format, extent[0])}, \ max: ${d3format(c.d3format, extent[1])}`; - row[c.key] = ( - -
- - - -
-
); + row[c.key] = { + data: sparkData[sparkData.length - 1], + display: ( + +
+ + + +
+
), + }; } else { const recent = reversedData[0][metric]; let v; @@ -140,10 +135,13 @@ function viz(slice, payload) { } else if (c.bounds && c.bounds[1] !== null) { color = v < c.bounds[1] ? ACCESSIBLE_COLOR_BOUNDS[1] : ACCESSIBLE_COLOR_BOUNDS[0]; } - row[c.key] = ( - - - ); + row[c.key] = { + data: v, + display: ( + + + ), + }; } }); return row; @@ -151,7 +149,9 @@ function viz(slice, payload) { ReactDOM.render( c.key)} > @@ -166,6 +166,18 @@ function viz(slice, payload) { )} ))} + {tableData.map(row => ( + + + {fd.column_collection.map(c => ( + ))} + ))}
Metric
{row.metric} + {row[c.key].display} +
, document.getElementById(slice.containerId), );