fix: null dates in table chart (#17974)

This commit is contained in:
Erik Ritter 2022-01-10 10:07:59 -08:00 committed by GitHub
parent 3a9bd12e3d
commit 1e544ce531
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 2 deletions

View File

@ -23,6 +23,7 @@ import {
getNumberFormatter,
} from '@superset-ui/core';
import { DataColumnMeta } from '../types';
import DateWithFormatter from './DateWithFormatter';
const xss = new FilterXSS({
whiteList: {
@ -62,7 +63,12 @@ function formatValue(
return [false, ''];
}
// render null as `N/A`
if (value === null) {
if (
value === null ||
// null values in temporal columns are wrapped in a Date object, so make sure we
// handle them here too
(value instanceof DateWithFormatter && value.input === null)
) {
return [false, 'N/A'];
}
if (formatter) {

View File

@ -76,7 +76,7 @@ describe('plugin-chart-table', () => {
);
tree = wrap.render(); // returns a CheerioWrapper with jQuery-like API
const cells = tree.find('td');
expect(cells).toHaveLength(8);
expect(cells).toHaveLength(12);
expect(cells.eq(0).text()).toEqual('2020-01-01 12:34:56');
expect(cells.eq(1).text()).toEqual('Michael');
// number is not in `metrics` list, so it should output raw value
@ -85,6 +85,7 @@ describe('plugin-chart-table', () => {
// should not render column with `.` in name as `undefined`
expect(cells.eq(3).text()).toEqual('foo');
expect(cells.eq(6).text()).toEqual('2467');
expect(cells.eq(8).text()).toEqual('N/A');
});
it('render advanced data', () => {

View File

@ -111,6 +111,13 @@ const basic: TableChartProps = {
'%pct_nice': 0.00001,
'abc.com': 'bar',
},
{
__timestamp: null,
name: 'Maria',
sum__num: 12342,
'%pct_nice': 0.341,
'abc.com': 'baz',
},
],
},
],